File: /var/www/html/wptoho/wp-content/plugins/really-simple-ssl/assets/features/two-fa/assets.min.js.map
{"version":3,"file":"two-fa/assets.min.js","mappings":"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;IACJ;EAAC;AAAA,EAlBkBpO,iDAAQ;AAqB/B,iEAAe+gB,QAAQ;;;;;;;;;;;ACxBX;;AAEZ,kBAAkB;AAClB,mBAAmB;AACnB,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA,mCAAmC,SAAS;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,UAAU;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACrJa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mBAAmB,mBAAO,CAAC,iEAAc;AACzC;AACA,+BAA+B;AAC/B,QAAQ,MAAM;AACd;AACA;AACA,sBAAsB,MAAM;AAC5B;AACA;AACA;AACA,+BAA+B;AAC/B,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;;;;;;;;ACpCF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;;;;;;;;;;;ACnBf,qHAAoD;AACpD,yBAAsB;;;;;;;;;;;;ACDtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,eAAe,mBAAO,CAAC,oDAAW;AAClC,gBAAgB,mBAAO,CAAC,gDAAS;AACjC;AACA;AACA;AACA;;AAEA,cAAc;AACd,kBAAkB;AAClB,yBAAyB;;AAEzB;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;;AAEA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,eAAe;AACxC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,yBAAyB,QAAQ;AACjC;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,qBAAqB,WAAW,GAAG,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,gBAAgB,WAAW,GAAG,IAAI,KAAK,aAAa;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;;AAEA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,KAAK,mDAAmD,cAAc;AACzF,GAAG;AACH;AACA;AACA,+BAA+B,IAAI;AACnC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,MAAM,aAAa,SAAS;AACtD;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,SAAS,gBAAgB;AACzB,cAAc,oBAAoB,EAAE,IAAI;AACxC;AACA,YAAY,gBAAgB,EAAE,IAAI;AAClC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG,SAAS,GAAG,KAAK,qBAAqB,EAAE,EAAE;AACpE,QAAQ;AACR,yBAAyB,GAAG,KAAK,yBAAyB,EAAE,EAAE;AAC9D,mBAAmB,yBAAyB,EAAE,EAAE;AAChD;AACA,MAAM;AACN,oBAAoB,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE,EAAE;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,cAAc,SAAS,OAAO;AACxE;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,YAAY;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACzjEY;;AAEZ,kBAAkB,mBAAO,CAAC,yDAAa;AACvC,iBAAiB,mBAAO,CAAC,uDAAY;AACrC,gBAAgB,mBAAO,CAAC,qDAAW;AACnC,gBAAgB,mBAAO,CAAC,qDAAW;AACnC,eAAe,mBAAO,CAAC,mDAAU;AACjC,eAAe,mBAAO,CAAC,mDAAU;AACjC,YAAY,mBAAO,CAAC,6CAAO;AAC3B,2BAA2B,mBAAO,CAAC,2EAAsB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,4BAA4B;AACvD;AACA;;AAEA;AACA,2BAA2B,4BAA4B;AACvD;AACA;;AAEA;AACA,2BAA2B,8BAA8B;AACzD;AACA;;AAEA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;;AAEA;AACA,2BAA2B,kCAAkC;AAC7D;AACA;;AAEA;AACA,2BAA2B,4BAA4B;AACvD;AACA;;AAEA;AACA,2BAA2B,yBAAyB;AACpD;AACA;;AAEA;AACA,2BAA2B,kCAAkC;AAC7D;AACA;;AAEA;AACA,2BAA2B,4BAA4B;AACvD;AACA;;AAEA;AACA,2BAA2B,8BAA8B;AACzD;AACA;;AAEA;AACA,2BAA2B,kCAAkC;AAC7D;AACA;;AAEA;AACA;AACA,MAAM,2DAA2D;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,qBAAqB,KAAK;AAC1B,iCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACjHY;;AAEZ,eAAe,mBAAO,CAAC,yDAAQ;AAC/B,cAAc,mBAAO,CAAC,iDAAS;AAC/B,gBAAgB,mBAAO,CAAC,qDAAW;AACnC,iBAAiB,mBAAO,CAAC,sDAAU;AACnC,OAAO,oBAAoB,EAAE,mBAAO,CAAC,yDAAa;AAClD,OAAO,QAAQ,EAAE,mBAAO,CAAC,8CAAQ;;AAEjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB;AACA,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA,WAAW,8CAA8C;AACzD;AACA,WAAW,iBAAiB;AAC5B,cAAc,+CAA+C;AAC7D,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW,iBAAiB,iBAAiB;AAC3D;AACA,cAAc,UAAU,qBAAqB,gBAAgB,UAAU;AACvE;AACA,cAAc,UAAU,gBAAgB;AACxC;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB,WAAW;AACxC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,wCAAwC;;AAErE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB,aAAa,gBAAgB;AAC7B,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,kCAAkC;AAClC,aAAa,8CAA8C,WAAW;AACtE;AACA,aAAa,iBAAiB;AAC9B,eAAe,SAAS;AACxB,cAAc,OAAO;AACrB;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,WAAW,2BAA2B;AACtC;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,iBAAiB,MAAM,OAAO,KAAK,MAAM,YAAY;AACrD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA,kCAAkC,eAAe;AACjD;AACA;AACA,iBAAiB,KAAK;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA;AACA,sBAAsB,MAAM,qBAAqB;AACjD,UAAU;AACV,sBAAsB,MAAM,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA,0BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,8BAA8B,KAAK,MAAM,YAAY;AACrD;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,4BAA4B,KAAK,MAAM,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B;AACA;AACA;AACA,wBAAwB,MAAM,qBAAqB;AACnD,YAAY;AACZ,wBAAwB,MAAM,qBAAqB;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9XY;;AAEZ;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe;;AAEf,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7EY;;AAEZ,0BAA0B,mBAAO,CAAC,8FAA+B;AACjE,eAAe,mBAAO,CAAC,mDAAU;AACjC,eAAe,mBAAO,CAAC,mDAAU;AACjC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,iBAAiB,mBAAO,CAAC,sDAAU;AACnC,eAAe,mBAAO,CAAC,yDAAQ;AAC/B,kBAAkB,mBAAO,CAAC,yDAAa;AACvC,OAAO,wBAAwB;AAC/B,OAAO,QAAQ,EAAE,mBAAO,CAAC,8CAAQ;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC;AACA;AACA;AACA,cAAc,KAAK;AACnB,cAAc,QAAQ;AACtB;AACA,cAAc,QAAQ;AACtB;AACA,cAAc,QAAQ;AACtB,2CAA2C,+BAA+B;AAC1E,MAAM,mCAAmC;AACzC;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA,iCAAiC;AACjC;AACA,cAAc,eAAe;AAC7B;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,gBAAgB;AAC9B;AACA,cAAc,SAAS;AACvB;AACA,cAAc,SAAS;AACvB,kDAAkD,sBAAsB;AACxE;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB,aAAa;AACb;AACA;AACA,WAAW,sCAAsC;AACjD;AACA,WAAW,gBAAgB;AAC3B,cAAc,8CAA8C;AAC5D,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW,iBAAiB,gBAAgB;AAC1D;AACA,cAAc,UAAU,qBAAqB,gBAAgB,UAAU;AACvE;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB,WAAW;AACxC;AACA,0BAA0B;AAC1B;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN,WAAW,wCAAwC;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB,eAAe,KAAK;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA,aAAa,uBAAuB,WAAW;AAC/C,eAAe,qBAAqB;AACpC,cAAc,qBAAqB;AACnC,cAAc,OAAO;AACrB;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,MAAM,SAAS;AACf,WAAW,2BAA2B;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,aAAa,YAAY;AACzB,aAAa,uBAAuB,WAAW;AAC/C;AACA,eAAe,mCAAmC;AAClD,cAAc,WAAW;AACzB,cAAc,OAAO;AACrB;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,MAAM,SAAS;AACf,WAAW,2BAA2B;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,mBAAmB;AACzB;AACA;AACA,aAAa,YAAY;AACzB,aAAa,sCAAsC,WAAW;AAC9D;AACA,aAAa,gBAAgB;AAC7B,eAAe,8BAA8B;AAC7C;AACA,cAAc,WAAW;AACzB;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA,MAAM,aAAa;AACnB,WAAW,6CAA6C;;AAExD;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,mCAAmC;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,yCAAyC,WAAW;AACjE;AACA,aAAa,mBAAmB;AAChC,eAAe,4CAA4C;AAC3D;AACA,cAAc,WAAW;AACzB;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA,MAAM,aAAa;AACnB,WAAW,2BAA2B;;AAEtC;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,gCAAgC;AAC/C;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,gBAAgB;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,GAAG;AACjE;AACA;AACA;AACA;AACA;AACA,oEAAoE,GAAG;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,IAAI;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC,6BAA6B,QAAQ;AACrC,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AC1qBY;;AAEZ,eAAe,mBAAO,CAAC,yDAAQ;AAC/B,gBAAgB,mBAAO,CAAC,qDAAW;AACnC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,iBAAiB,mBAAO,CAAC,sDAAU;AACnC,OAAO,UAAU,EAAE,mBAAO,CAAC,yDAAa;;AAExC;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB;AACA,cAAc,QAAQ;AACtB;AACA;AACA,iCAAiC;AACjC;AACA,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA,WAAW,yCAAyC;AACpD;AACA,WAAW,kBAAkB;AAC7B,cAAc,iDAAiD;AAC/D,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW,iBAAiB,kBAAkB;AAC5D;AACA,cAAc,UAAU,qBAAqB,gBAAgB,UAAU;AACvE;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB,WAAW;AACzC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB,aAAa,gBAAgB;AAC7B,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,aAAa,YAAY;AACzB,aAAa,0CAA0C,WAAW;AAClE;AACA,aAAa,kBAAkB;AAC/B,eAAe,SAAS;AACxB,cAAc,WAAW;AACzB;AACA,qCAAqC;AACrC;AACA;AACA;AACA,MAAM,aAAa;AACnB,WAAW,2BAA2B;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjRY;;AAEZ,eAAe,mBAAO,CAAC,yDAAQ;AAC/B,iBAAiB,mBAAO,CAAC,sDAAU;AACnC,cAAc,mBAAO,CAAC,iDAAS;AAC/B,kBAAkB,mBAAO,CAAC,yDAAa;AACvC;AACA;AACA,EAAE;AACF,OAAO,QAAQ,EAAE,mBAAO,CAAC,8CAAQ;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,qBAAqB;AACjC;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,KAAK;AAChB,aAAa,SAAS;AACtB;;AAEA;AACA;AACA;AACA;AACA,aAAa,iCAAiC;AAC9C;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,aAAa,iCAAiC;AAC9C,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,IAAI;AACpD;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA,cAAc,mCAAmC;AACjD;AACA;AACA,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,QAAQ;AACtB;AACA,cAAc,SAAS;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB,WAAW;AACzC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA,6CAA6C,SAAS;AACtD;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB,aAAa,gBAAgB;AAC7B,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,aAAa,QAAQ;AACrB;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,WAAW;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,aAAa,eAAe;AAC5B,eAAe,SAAS;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA,6BAA6B,0CAA0C;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B,aAAa,gBAAgB;AAC7B,eAAe,iBAAiB;AAChC;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB,eAAe,SAAS;AACxB,cAAc,WAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,eAAe;AAClE;AACA;AACA;AACA,2BAA2B,WAAW,IAAI,2DAA2D;AACrG;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,aAAa,MAAM;AACnB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;;AAEA;AACA,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,aAAa,KAAK;AAClB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,aAAa,KAAK;AAClB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,aAAa,KAAK;AAClB,eAAe,SAAS;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,+BAA+B,yCAAyC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,aAAa,mBAAmB;AAChC,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;;AAEjB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB,cAAc,cAAc;AAC5B,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,gCAAgC;AAC7C;AACA,aAAa,iBAAiB,WAAW;AACzC,eAAe,SAAS;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,kBAAkB;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB,aAAa,iBAAiB,WAAW;AACzC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB,aAAa,iBAAiB,WAAW;AACzC,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACnmCY;;AAEZ,OAAO,QAAQ,EAAE,mBAAO,CAAC,8CAAQ;AACjC,gBAAgB,mBAAO,CAAC,qDAAW;AACnC,gBAAgB,mBAAO,CAAC,qDAAW;AACnC,OAAO,IAAI,EAAE,mBAAO,CAAC,yDAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,eAAe;AAC5B;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA,aAAa,KAAK;AAClB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA,eAAe,SAAS;AACxB,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,oCAAoC;AACjD;AACA,aAAa,KAAK;AAClB,cAAc,WAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnLY;;AAEZ;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACtEY;;AAEZ,gBAAgB,mBAAO,CAAC,qDAAW;AACnC,uBAAuB,mBAAO,CAAC,mEAAkB;AACjD,OAAO,QAAQ,EAAE,mBAAO,CAAC,8CAAQ;;AAEjC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,aAAa,mCAAmC;AAChD;AACA,eAAe,SAAS;AACxB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB,aAAa,qCAAqC,WAAW;AAC7D;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB,aAAa,qCAAqC,WAAW;AAC7D;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;;;;;;;;;;;AC7IY;;AAEZ,OAAO,kBAAkB,EAAE,mBAAO,CAAC,yDAAa;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA,8CAA8C,aAAa;AAC3D;AACA;AACA,iEAAiE,MAAM;AACvE;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA,qBAAqB,WAAW;AAChC;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA,qBAAqB,WAAW;AAChC;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,wCAAwC;AACvD,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvGY;;AAEZ,kBAAkB,mBAAO,CAAC,yDAAa;AACvC,cAAc,mBAAO,CAAC,iDAAS;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,gCAAgC,cAAc;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,QAAQ,mCAAmC;AACtD;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;AACA;AACA,aAAa,8BAA8B;AAC3C;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA,gCAAgC;AAChC;AACA,4BAA4B;AAC5B;AACA,sBAAsB;AACtB;AACA,sBAAsB;AACtB;AACA,gDAAgD;AAChD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,6CAA6C;AAC7C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,6CAA6C;AAC7C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,UAAU;AACV;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,IAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd;AACA;AACA;AACA,gDAAgD,IAAI;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,KAAK;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA,yDAAyD,SAAS;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA,cAAc,SAAS,GAAG,2BAA2B;AACrD;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3XY;;AAEZ,OAAO,QAAQ,EAAE,mBAAO,CAAC,8CAAQ;AACjC,iBAAiB,mBAAO,CAAC,sDAAU;AACnC,eAAe,mBAAO,CAAC,yDAAQ;AAC/B,kBAAkB,mBAAO,CAAC,yDAAa;AACvC,OAAO,6BAA6B;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6BAA6B;AACjE,YAAY;AACZ,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,GAAG;AAC7D;AACA;;AAEA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,6CAA6C;AAC7C;AACA,mCAAmC;AACnC;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ,SAAS,oCAAoC;AAC7C;;AAEA;;AAEA,WAAW;AACX,mCAAmC;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;;AAEA,WAAW;AACX;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB;AACtB,qBAAqB,oBAAoB;AACzC;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,EAAE,GAAG,YAAY;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,IAAI;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,0DAA0D;AACrE;AACA,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA,WAAW,0DAA0D;AACrE;AACA,aAAa,QAAQ;AACrB;AACA;AACA,cAAc;AACd;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;;;;;;;;;;;;ACnTA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEY;AACZ,eAAe,mBAAO,CAAC,yDAAQ;AAC/B,iBAAiB,mBAAO,CAAC,sDAAU;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB,aAAa,gBAAgB;AAC7B,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,sBAAsB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA,SAAS,yBAAyB;AAClC;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,8DAA8D,YAAY;AAC1E;AACA,8DAA8D,YAAY;AAC1E;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;;;;;;;;;;AChfA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS,WAAW;;AAEpB;AACA;AACA;AACA,SAAS,WAAW;;AAEpB;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA,SAAS,WAAW;;AAEpB;AACA;AACA,SAAS,UAAU;;AAEnB;AACA;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1BY;;AAEZ,eAAe,mBAAO,CAAC,yDAAQ;AAC/B,OAAO,QAAQ,EAAE,mBAAO,CAAC,8CAAQ;AACjC,oCAAoC,6BAA6B;;AAEjE;AACA,aAAa,QAAQ;AACrB,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAC9B;AACA,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,gBAAgB;AAC9B;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,gBAAgB;AAC9B;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,QAAQ;AACtB;AACA,cAAc,SAAS;AACvB;AACA,cAAc,QAAQ;AACtB;AACA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8CAA8C;AAC3D,aAAa,gCAAgC;AAC7C;AACA,aAAa,iBAAiB;AAC9B;AACA,gDAAgD;AAChD;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,SAAS;AACrC;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,UAAU;AACvB,aAAa,UAAU;AACvB,eAAe,QAAQ;AACvB,cAAc,WAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA,aAAa,QAAQ;AACrB,eAAe,cAAc;AAC7B;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA,gCAAgC,WAAW,WAAW,KAAK;AAC3D;AACA,MAAM;AACN,mDAAmD,KAAK;AACxD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,MAAM;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,MAAM;AACzD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,eAAe,QAAQ;AACvB,cAAc,WAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,cAAc,gCAAgC;AAC7D;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc,uBAAuB,GAAG,IAAI;AAC5C;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9hCA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC;;AAEtC;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA,6BAA6B;;;;;;;;;;;ACvL7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,uBAAuB,QAAQ;;AAE/B;;AAEA,yBAAyB,QAAQ;;AAEjC;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,sBAAsB,OAAO;;AAE7B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,sBAAsB,gBAAgB;;AAEtC,wBAAwB,gBAAgB;;AAExC;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B,QAAQ;;AAEnC,6BAA6B,QAAQ;;AAErC;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,sBAAsB,QAAQ;;AAE9B;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,sBAAsB,QAAQ;;AAE9B;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,SAAS;;AAEhD;;AAEA;;AAEA,0BAA0B,OAAO;;AAEjC;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAsB,qBAAqB;;AAE3C;AACA;;AAEA;AACA;;AAEA;;AAEA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,qBAAqB;AAC3C;AACA;;AAEA;AACA;;AAEA,sBAAsB,gBAAgB;AACtC,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,gBAAgB;AACtC,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,qBAAqB;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,iBAAiB;AAChC;AACA;;AAEA,0BAA0B,sBAAsB;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,qBAAqB;AAC/C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,qCAAqC,mBAAmB;AACxD,4CAA4C;AAC5C,gCAAgC,yBAAyB;AACzD;AACA;;AAEA,sBAAsB,4BAA4B;;AAElD;;AAEA,wBAAwB,4BAA4B;AACpD;AACA,yCAAyC,mBAAmB;AAC5D,gDAAgD;AAChD,oCAAoC,YAAY;AAChD,gDAAgD;AAChD,iDAAiD;AACjD;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yCAAyC,WAAW;AACpD;AACA;;AAEA;AACA,6CAA6C,aAAa;AAC1D;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,4BAA4B;AAC9C;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sBAAsB,cAAc;AACpC;AACA;AACA,kCAAkC,GAAG;AACrC,kCAAkC,GAAG;AACrC,mCAAmC,GAAG;AACtC,oCAAoC,GAAG;AACvC,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,UAAU;AAC5B;AACA;AACA,oBAAoB,UAAU;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA;AACA,oBAAoB,UAAU;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,cAAc;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,0BAA0B,cAAc;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,cAAc;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA,sBAAsB,cAAc;AACpC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;AACA,gCAAgC;AAChC;AACA,gCAAgC;AAChC;AACA,gCAAgC;AAChC;AACA,gCAAgC;AAChC;AACA,gCAAgC;AAChC;AACA,gCAAgC;AAChC;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,wBAAwB;AAC9C;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;;AAER;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;;AAER;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;AACR;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wBAAwB,mBAAmB;AAC3C,0BAA0B,mBAAmB;;AAE7C;AACA;;AAEA,2BAA2B,QAAQ;;AAEnC;AACA;AACA;;AAEA,6BAA6B,QAAQ;;AAErC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,wBAAwB,uBAAuB;AAC/C,0BAA0B,uBAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,wBAAwB,mBAAmB;AAC3C,0BAA0B,uBAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAmB;AAC3C,0BAA0B,uBAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,wBAAwB,mBAAmB;AAC3C,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,sBAAsB,uBAAuB;AAC7C,wBAAwB,mBAAmB;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,sBAAsB,uBAAuB;AAC7C;AACA;;AAEA,sBAAsB,mBAAmB;AACzC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,sBAAsB,YAAY;;AAElC;AACA;AACA;;AAEA,wBAAwB,WAAW;AACnC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,YAAY;AAClC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,cAAc;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;;AAEA;AACA,sBAAsB,cAAc;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,2BAA2B;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,UAAU;;AAEV;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,YAAY;AAChC,sBAAsB,WAAW;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;;AAEA,2BAA2B;AAC3B;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA,MAAM,IAA0C;AAChD,MAAM,iCAAO,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAC;AACzB,IAAI,KAAK,EAEN;AACH,CAAC;AACD;AACA,CAAC;;;;;;;;;;;;ACxvEY;;AAEb,gDAAgD,0DAA0D,2CAA2C;;AAErJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;;;AAGF;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,oBAAoB;;;;;;;;;;;;;AC9HpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,mBAAO,CAAC,kFAAoB;AAC3C,eAAe,mBAAO,CAAC,kFAAoB;AAC3C,mBAAO,CAAC,6DAAU;AAClB;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE,OAAO;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;AC7HD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEa;;AAEb;AACA,gBAAgB,mBAAO,CAAC,oFAAqB;AAC7C,mBAAO,CAAC,6DAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS,mFAA8B;AACvC;AACA;AACA;AACA;;AAEA;AACA,aAAa,mBAAO,CAAC,wGAA2B;AAChD;;AAEA,aAAa,4EAAwB;AACrC,4BAA4B,qBAAM,mBAAmB,qBAAM,mFAAmF;AAC9I;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAO,CAAC,mBAAM;AAC9B;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,0GAAgC;AACzD,kBAAkB,mBAAO,CAAC,kGAA4B;AACtD,eAAe,mBAAO,CAAC,8FAA0B;AACjD;AACA,qBAAqB,gGAA0B;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAO,CAAC,6DAAU;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yEAAyE,mFAAmF;AAC5J;AACA;AACA,qBAAqB,mBAAO,CAAC,8EAAkB;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iHAAwC;AAChF;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAO,CAAC,8EAAkB;AAC/C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,+FAA+F;AAC/F,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA,4FAA4F;AAC5F,UAAU;AACV;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,iHAAwC;AAC9E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,OAAO,oBAAoB,OAAO;AAClG;AACA,wBAAwB,OAAO,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,mBAAO,CAAC,gHAAmC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA,mDAAmD,+DAA+D;AAClH;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,oGAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA;;;;;;;;;;;AClgCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,aAAa;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA,qBAAqB,gGAA0B;AAC/C;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,8EAAkB;AACvC,mBAAO,CAAC,6DAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,mBAAO,CAAC,gEAAgB;AACrC;AACA;;AAEA;AACA,aAAa,mBAAO,CAAC,wGAA2B;AAChD;;AAEA,aAAa,4EAAwB;AACrC,4BAA4B,qBAAM,mBAAmB,qBAAM,mFAAmF;AAC9I;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,kGAA4B;AACtD,eAAe,mBAAO,CAAC,8FAA0B;AACjD;AACA,qBAAqB,gGAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAO,CAAC,6DAAU;AAClB;AACA;AACA,qBAAqB,mBAAO,CAAC,8EAAkB;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,IAAI;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAO,CAAC,8EAAkB;;AAE/C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,sDAAsD;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO;AACb,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO;AACb,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO,cAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChoBa;;AAEb;AACA,4CAA4C,2BAA2B,kBAAkB,kCAAkC,oEAAoE,KAAK,OAAO,oBAAoB;AAC/N,+BAA+B,uCAAuC;AACtE,qCAAqC,+DAA+D,sCAAsC,0BAA0B,+CAA+C,yCAAyC,uEAAuE;AACnU,eAAe,mBAAO,CAAC,6FAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA;AACA,yFAAyF;AACzF;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;ACnLa;;AAEb,2CAA2C,gCAAgC,oCAAoC,oDAAoD,6DAA6D,iEAAiE,sCAAsC;AACvU,iCAAiC,gBAAgB,sBAAsB,OAAO,uDAAuD,6DAA6D,4CAA4C,oKAAoK,mFAAmF,KAAK;AAC1e,4CAA4C,2BAA2B,kBAAkB,kCAAkC,oEAAoE,KAAK,OAAO,oBAAoB;AAC/N,kDAAkD,0CAA0C;AAC5F,4CAA4C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD;AAC/P,8DAA8D,sEAAsE,8DAA8D,kDAAkD,iBAAiB,GAAG;AACxQ,+BAA+B,uCAAuC;AACtE,qCAAqC,+DAA+D,sCAAsC,0BAA0B,+CAA+C,yCAAyC,uEAAuE;AACnU,eAAe,mBAAO,CAAC,8CAAQ;AAC/B;AACA,gBAAgB,mBAAO,CAAC,mBAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,yDAAyD,cAAc;AACvE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;ACtLY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,QAAQ,OAAO;AACf,QAAQ;AACR;AACA,QAAQ,OAAO;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO;AACf,QAAQ;AACR;AACA,QAAQ,OAAO;AACf,QAAQ;AACR,QAAQ,OAAO;AACf;AACA,MAAM;AACN,MAAM,OAAO;AACb;AACA,MAAM;AACN,MAAM,OAAO;AACb;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC/FA;AACA;;AAEa;;AAEb,iCAAiC,sGAAgC;AACjE;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACrFA;AACA;AACA;;;;;;;;;;;;ACFA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sGAAgC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,+BAA+B,mBAAO,CAAC,6FAAiB;AACxD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,aAAa;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;;;;;;;;;;ACrFa;;AAEb,4BAA4B,sGAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACrBA,kGAA+C;;;;;;;;;;;ACA/C;AACA;AACA,aAAa,mBAAO,CAAC,8CAAQ;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE,cAAc;AAChB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,mFAA8B;AACvC,eAAe,mBAAO,CAAC,6DAAU;;AAEjC;AACA,kBAAkB,mBAAO,CAAC,uGAAyC;AACnE,kBAAkB,mBAAO,CAAC,uGAAyC;AACnE,gBAAgB,mBAAO,CAAC,mGAAuC;AAC/D,mBAAmB,mBAAO,CAAC,yGAA0C;AACrE,qBAAqB,mBAAO,CAAC,6GAA4C;AACzE,kBAAkB,mBAAO,CAAC,mIAAuD;AACjF,kBAAkB,mBAAO,CAAC,yHAAkD;;AAE5E;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;;;;;;;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,aAAa,sFAA6B;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,sCAAsC,sCAAsC;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACtSA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,SAAS,qBAAM;AACf,IAAI;AACJ;AACA;AACA,YAAY,qBAAM;AAClB;AACA;AACA;;;;;;;;;;;AClEA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;ACAA;AACA,4BAA4B,cAAc,sBAAsB,uBAAuB,GAAG,SAAS,KAAK,6GAA6G,EAAE,SAAS,KAAK,kJAAkJ,EAAE,cAAc,oDAAoD,cAAc,iDAAiD,cAAc,6CAA6C,cAAc,0DAA0D,cAAc,8DAA8D,oBAAoB,+CAA+C,cAAc,6EAA6E,gBAAgB,gDAAgD,0EAA0E,aAAa,mCAAmC,mBAAmB,iFAAiF,cAAc,8IAA8I,WAAW,oBAAoB,wDAAwD,8CAA8C,8FAA8F,+BAA+B,YAAY,QAAQ,iCAAiC,OAAO,6BAA6B,8EAA8E,OAAO,yDAAyD,kCAAkC,yBAAyB,EAAE,2BAA2B,4CAA4C,8JAA8J,uBAAuB,iFAAiF,0CAA0C,6BAA6B,eAAe,mFAAmF,uBAAuB,qDAAqD,OAAO,sJAAsJ,mNAAmN,SAAS,mBAAmB,kHAAkH,oBAAoB,8FAA8F,oIAAoI,OAAO,kLAAkL,mGAAmG,uCAAuC,2EAA2E,EAAE,2DAA2D,wBAAwB,iBAAiB,OAAO,sJAAsJ,sJAAsJ,cAAc,2BAA2B,0BAA0B,EAAE,sDAAsD,SAAS,KAAK,qHAAqH,EAAE,SAAS,KAAK,mKAAmK,EAAE,OAAO,g2XAAg2X,+BAA+B,cAAc,4DAA4D,cAAc,6BAA6B,+CAA+C,OAAO,qBAAqB,2IAA2I,qEAAqE,cAAc,wBAAwB,cAAc,gEAAgE,4BAA4B,SAAS,iBAAiB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,mBAAmB,EAAE,cAAc,UAAU,qBAAqB,qBAAqB,uBAAuB,mDAAmD,EAAE,IAAI,cAAc,sCAAsC,cAAc,gBAAgB,eAAe,OAAO,eAAe,0MAA0M,aAAa,mHAAmH,iFAAiF,gBAAgB,OAAO,wJAAwJ,cAAc,sCAAsC,cAAc,aAAa,iDAAiD,YAAY,sBAAsB,yBAAyB,WAAW,sCAAsC,aAAa,sBAAsB,oBAAoB,sBAAsB,qEAAqE,8DAA8D,6EAA6E,OAAO,GAAG,+EAA+E,SAAS,GAAG,wFAAwF,YAAY,GAAG,iCAAiC,wBAAwB,0DAA0D,MAAM,KAAK,KAAK,GAAG,aAAa,iLAAiL,wCAAwC,qBAAqB,GAAG,qEAAqE,yHAAyH,OAAO,GAAG,+EAA+E,SAAS,GAAG,wFAAwF,YAAY,GAAG,8DAA8D,0DAA0D,YAAY,KAAK,EAAE,GAAG,+FAA+F,iHAAiH,0FAA0F,aAAa,eAAe,UAAU,IAAI,cAAc,cAAc,UAAU,mBAAmB,yCAAyC,mBAAmB,gDAAgD,oEAAoE,EAAE,6CAA6C,sBAAsB,kBAAkB,yDAAyD,kBAAkB,+EAA+E,EAAE,mBAAmB,oBAAoB,gCAAgC,gIAAgI,WAAW,qBAAqB,WAAW,2CAA2C,cAAc,+FAA+F,mCAAmC,OAAO,4DAA4D,MAAuG;AAC3rpB;;;;;;;UCFA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;ACLqC;AACN;AACG;AACS;AACe;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEAvS,MAAM,CAAC0S,MAAM,GAAG,YAAW;EACvB,IAAG,OAAOC,aAAa,KAAK,WAAW,EAAE;IACrC,IAAIpK,UAAU,GAAG,IAAInJ,mDAAU,CAACuT,aAAa,CAACjhB,IAAI,EAAEihB,aAAa,CAAC;IAClEpK,UAAU,CAACjJ,IAAI,CAAC,CAAC;EACrB;EAEA,IAAI,OAAOmS,aAAa,KAAK,WAAW,EAAE;IACtC,IAAIC,OAAO,GAAG,IAAItB,gDAAO,CAACqB,aAAa,CAAC/f,IAAI,EAAE+f,aAAa,CAAC;IAC5DC,OAAO,CAACpS,IAAI,CAAC,CAAC;IACd,IAAMsT,YAAY,GAAG,IAAIlN,8DAAmB,CAAC+L,aAAa,CAAC/f,IAAI,EAAE+f,aAAa,CAAC;IAC/EmB,YAAY,CAACtT,IAAI,CAAC,CAAC;EACvB;EAEA,IAAG,OAAOuT,cAAc,KAAK,WAAW,EAAE;IACtC,IAAIC,QAAQ,GAAG,IAAIP,iDAAQ,CAACM,cAAc,CAACnhB,IAAI,EAAEmhB,cAAc,CAAC;IAChEC,QAAQ,CAACxT,IAAI,CAAC,CAAC;EACnB;EACA,IAAG,OAAOyT,WAAW,KAAK,WAAW,EAAE;IACnC,IAAIxb,KAAK,GAAG,IAAIkb,sDAAY,CAACM,WAAW,CAACrhB,IAAI,EAAEqhB,WAAW,CAAC;IAC3Dxb,KAAK,CAAC+H,IAAI,CAAC,CAAC;EAChB;AACJ,CAAC,C","sources":["webpack://really-simple-ssl/../security/wordpress/two-fa/assets/js/BaseAuth.js","webpack://really-simple-ssl/../security/wordpress/two-fa/assets/js/onboarding.js","webpack://really-simple-ssl/../security/wordpress/two-fa/assets/js/passkey-login.js","webpack://really-simple-ssl/../security/wordpress/two-fa/assets/js/passkey-table-manager.js","webpack://really-simple-ssl/../security/wordpress/two-fa/assets/js/passkey.js","webpack://really-simple-ssl/../security/wordpress/two-fa/assets/js/profile.js","webpack://really-simple-ssl/../security/wordpress/two-fa/assets/js/validate.js","webpack://really-simple-ssl/./node_modules/base64-js/index.js","webpack://really-simple-ssl/./node_modules/base64url/dist/base64url.js","webpack://really-simple-ssl/./node_modules/base64url/dist/pad-string.js","webpack://really-simple-ssl/./node_modules/base64url/index.js","webpack://really-simple-ssl/./node_modules/buffer/index.js","webpack://really-simple-ssl/./node_modules/cbor/lib/cbor.js","webpack://really-simple-ssl/./node_modules/cbor/lib/commented.js","webpack://really-simple-ssl/./node_modules/cbor/lib/constants.js","webpack://really-simple-ssl/./node_modules/cbor/lib/decoder.js","webpack://really-simple-ssl/./node_modules/cbor/lib/diagnose.js","webpack://really-simple-ssl/./node_modules/cbor/lib/encoder.js","webpack://really-simple-ssl/./node_modules/cbor/lib/map.js","webpack://really-simple-ssl/./node_modules/cbor/lib/objectRecorder.js","webpack://really-simple-ssl/./node_modules/cbor/lib/sharedValueEncoder.js","webpack://really-simple-ssl/./node_modules/cbor/lib/simple.js","webpack://really-simple-ssl/./node_modules/cbor/lib/tagged.js","webpack://really-simple-ssl/./node_modules/cbor/lib/utils.js","webpack://really-simple-ssl/./node_modules/cbor/vendor/binary-parse-stream/index.js","webpack://really-simple-ssl/./node_modules/events/events.js","webpack://really-simple-ssl/./node_modules/ieee754/index.js","webpack://really-simple-ssl/./node_modules/inherits/inherits_browser.js","webpack://really-simple-ssl/./node_modules/nofilter/lib/index.js","webpack://really-simple-ssl/./node_modules/process/browser.js","webpack://really-simple-ssl/./node_modules/qrcode-generator/qrcode.js","webpack://really-simple-ssl/./node_modules/readable-stream/errors-browser.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/_stream_readable.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/_stream_transform.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/_stream_writable.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://really-simple-ssl/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://really-simple-ssl/./node_modules/safe-buffer/index.js","webpack://really-simple-ssl/./node_modules/stream-browserify/index.js","webpack://really-simple-ssl/./node_modules/string_decoder/lib/string_decoder.js","webpack://really-simple-ssl/./node_modules/util-deprecate/browser.js","webpack://really-simple-ssl/ignored|/Users/marcelsanting/PhpstormProjects/really-simple-ssl-pro/settings/node_modules/readable-stream/lib/internal/streams|util","webpack://really-simple-ssl/ignored|/Users/marcelsanting/PhpstormProjects/really-simple-ssl-pro/settings/node_modules/readable-stream/lib|util","webpack://really-simple-ssl/./node_modules/@passwordless-id/webauthn/dist/browser/webauthn.min.js","webpack://really-simple-ssl/webpack/bootstrap","webpack://really-simple-ssl/webpack/runtime/compat get default export","webpack://really-simple-ssl/webpack/runtime/define property getters","webpack://really-simple-ssl/webpack/runtime/global","webpack://really-simple-ssl/webpack/runtime/hasOwnProperty shorthand","webpack://really-simple-ssl/webpack/runtime/make namespace object","webpack://really-simple-ssl/../security/wordpress/two-fa/assets/js/index.js"],"sourcesContent":["import qrcode from 'qrcode-generator'\nclass BaseAuth {\n constructor(root, settings) {\n this.root = root;\n this.settings = settings;\n this.translatableStrings = {\n keyCopied: this.settings.translatables.keyCopied,\n webauthn_not_available: this.settings.translatables.webauthn_not_available,\n unknown_error: this.settings.translatables.unknown_error,\n response_error: this.settings.translatables.response_error,\n passkey_not_found: this.settings.translatables.passkey_not_found,\n passkey_login_error: this.settings.translatables.passkey_login_error,\n passkey_registration_error: this.settings.translatables.passkey_registration_error,\n passkey_login_success: this.settings.translatables.passkey_login_success,\n passkey_configuration: this.settings.translatables.passkey_configuration,\n error_assertion: this.settings.translatables.error_assertion,\n notice_inform: this.settings.translatables.notice_inform,\n register_passkey: this.settings.translatables.register_passkey,\n network_not_ok: this.settings.translatables.network_not_ok,\n error_complete_registration: this.settings.translatables.error_complete_registration,\n usb: this.settings.translatables.usb,\n nfc: this.settings.translatables.nfc,\n ble: this.settings.translatables.ble,\n internal: this.settings.translatables.internal,\n cross_platform: this.settings.translatables.cross_platform,\n unknown: this.settings.translatables.unknown,\n pending: this.settings.translatables.pending,\n success: this.settings.translatables.success,\n login: this.settings.translatables.login,\n login_failed: this.settings.translatables.login_failed,\n log_in_with_passkey: this.settings.translatables.log_in_with_passkey,\n or: this.settings.translatables.or,\n };\n }\n getElement = (id) => document.getElementById(id);\n\n getCheckedInputValue = (name) => document.querySelector(`input[name=\"${name}\"]:checked`).value;\n\n /**\n * Performs a fetch operation.\n *\n * @param {string} urlExtension - The URL extension to perform the fetch operation on.\n * @param {Object} data - The data to be sent in the fetch operation.\n * @param {string} [method='POST'] - The HTTP method to be used in the fetch operation. Defaults to 'POST'.\n * @returns {Promise} - A Promise that resolves with the response of the fetch operation.\n */\n performFetchOp = (urlExtension, data, method = 'POST') => {\n let url = this.root + urlExtension;\n let fetchParams = {\n method: method,\n headers: {'Content-Type': 'application/json',},\n };\n if (method === 'POST') {\n fetchParams.body = JSON.stringify(data);\n }\n return fetch(url, fetchParams);\n };\n\n assignClickListener = (id, callback) => {\n const element = this.getElement(id);\n if (element) {\n element.addEventListener('click', function (e) {\n e.preventDefault();\n callback();\n });\n }\n }\n\n\n\n logFetchError = (error) => console.error('There has been a problem with your fetch operation:', error);\n\n /**\n * Generates a QR code for Two-Factor Authentication using the TOTP URL.\n * If the TOTP URL is not available, nothing will be generated.\n *\n * @function qr_generator\n * @returns {void} Nothing is returned.\n */\n qr_generator = () => {\n const totp_url = this.settings.totp_data.totp_url;\n if (!totp_url) {\n return;\n }\n\n let qr = qrcode(0, 'L');\n qr.addData(totp_url);\n qr.make();\n let qrElem = document.querySelector('#two-factor-qr-code a');\n if (qrElem != null) {\n let svgString = qr.createSvgTag(5);\n // Replace xMinYMin with xMidYMid for proper centering\n svgString = svgString.replace('preserveAspectRatio=\"xMinYMin meet\"', 'preserveAspectRatio=\"xMidYMid meet\"');\n qrElem.innerHTML = svgString;\n }\n };\n\n /**\n * Downloads backup codes as a text file.\n *\n * @function download_codes\n */\n download_codes = () => {\n let TextToCode = this.settings.totp_data.backup_codes;\n let TextToCodeString = '';\n TextToCode.forEach(function (item) {\n TextToCodeString += item + '\\n';\n });\n let downloadLink = document.createElement('a');\n downloadLink.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(TextToCodeString));\n downloadLink.setAttribute('download', 'backup_codes.txt');\n downloadLink.style.display = 'none';\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n };\n\n /**\n * This function copies the text from the `totp_data.key` property of the `settings` object\n * using the Clipboard API. It then shows a success message and reverts back to the original display\n * after a specified timeout.\n *\n * @function copyTextAndShowMessage\n * @memberof BaseAuth\n */\n copyTextAndShowMessage = () => {\n let text = this.settings.totp_data.key; // Get the text to be copied\n if(this.getElement('totp-key') === null) {\n return;\n }\n\n // Use Clipboard API to copy the text\n navigator.clipboard.writeText(text).then(() => {\n // Change the display of the key\n let originalText = this.getElement('totp-key').innerText;\n this.getElement('totp-key').innerText = this.settings.translatables.keyCopied;\n this.getElement('totp-key').style.color = 'green';\n\n // Revert back to original text after a timeout\n setTimeout(() => {\n this.getElement('totp-key').innerText = originalText;\n this.getElement('totp-key').style.color = ''; // Reset the color\n }, 2000); // Adjust timeout as needed\n\n }, function (err) {\n console.error(this.settings.translatables.keyCopiedFailed, err);\n });\n }\n\n}\n\nexport default BaseAuth;","import BaseAuth from './BaseAuth';\nimport Passkey from \"./passkey\"; // New import for Passkey class\nclass Onboarding extends BaseAuth {\n\n init() {\n const translatableStrings = {\n keyCopied: 'Key copied',\n };\n\n let endpoints = ['do_not_ask_again', 'skip_onboarding'];\n this.passkey = new Passkey(this.root, this.settings); // New instance of Passkey added\n this.passkey.init(); // Initializing Passkey\n let that = this;\n\n endpoints.forEach(endpoint => {\n let endpointsElement = this.getElement(endpoint);\n if (endpointsElement !== null) {\n endpointsElement.addEventListener('click', (event) => { // Use arrow function here\n event.preventDefault();\n // we call the performFetchOp method and then log the response\n this.performFetchOp(`/${endpoint}`, this.settings)\n .then(response => response.json())\n // We log the data and redirect to the redirect_to URL\n .then(data => window\n .location\n .href = data.redirect_to)\n // We catch any errors and log them\n .catch(this.logFetchError);\n });\n }\n });\n\n let endpointElem = this.getElement('rsssl_continue_onboarding');\n const handleClick = (event) => {\n event.preventDefault();\n let urlExtension = '';\n let selectedProvider = this.getCheckedInputValue('preferred_method');\n if (selectedProvider === 'email') {\n let data = {\n provider: selectedProvider,\n redirect_to: this.settings.redirect_to,\n user_id: this.settings.user_id,\n login_nonce: this.settings.login_nonce\n };\n urlExtension = '/save_default_method_email';\n this.performFetchOp(urlExtension, data)\n .then(response => response.json())\n .then(data => {\n this.getElement('rsssl_step_one_onboarding').style.display = 'none';\n const validation_check = document.getElementById(\"rsssl_step_four_onboarding\");\n validation_check.style.display = \"block\";\n // Removing the 'click' event listener from the rsssl_continue_onboarding id button\n endpointElem.addEventListener('click', (event) => handleValidation(event, data));\n endpointElem.removeEventListener('click', handleClick);\n\n })\n .catch(that.logFetchError);\n } else if (selectedProvider === 'totp') {\n // Hiding step one and showing step two\n this.getElement('rsssl_step_one_onboarding').style.display = 'none';\n // We hide this element\n endpointElem.style.display = 'none';\n this.getElement('rsssl_step_two_onboarding').style.display = 'block';\n } else if (selectedProvider === 'passkey') { // New Passkey handling block\n this.getElement('rsssl_step_one_onboarding').style.display = 'none';\n endpointElem.style.display = 'none';\n this.getElement('rsssl_step_three_onboarding').style.display = 'block';\n // Trigger Passkey registration from Onboarding\n this.passkey.fireRegistration().then(r => {\n if (r) {\n this.getElement('rsssl_step_three_onboarding').style.display = 'none';\n this.getElement('rsssl_step_four_onboarding').style.display = 'block';\n }\n });\n }\n }\n\n const handleValidation = async (event, data) => {\n event.preventDefault();\n let selectedProvider = this.getCheckedInputValue('preferred_method');\n let urlExtension = '/' + data.validation_action;\n let sendData = {\n user_id: this.settings.user_id,\n login_nonce: this.settings.login_nonce,\n redirect_to: this.settings.redirect_to,\n token: document.getElementById('rsssl-authcode').value,\n provider: selectedProvider\n };\n let response;\n try {\n response = await this.performFetchOp(urlExtension, sendData);\n } catch (err) {\n console.log('Fetch Error: ', err);\n }\n if (response && !response.ok) {\n let error = await response.json();\n this.displayTwoFaOnboardingError(error.error);\n }\n if (response && response.ok) {\n let data = await response.json();\n window.location.href = data.redirect_to;\n }\n };\n\n if (endpointElem !== null) {\n endpointElem.addEventListener('click', handleClick);\n }\n\n let totpSubmit = this.getElement('two-factor-totp-submit');\n if (totpSubmit !== null) {\n totpSubmit.addEventListener('click', async (event) => {\n event.preventDefault();\n let authCode = document.getElementById('two-factor-totp-authcode').value;\n let key = this.settings.totp_data.key;\n let selectedProvider = this.getCheckedInputValue('preferred_method');\n let sendData = {\n 'two-factor-totp-authcode': authCode,\n provider: selectedProvider,\n key: key,\n redirect_to: this.settings.redirect_to,\n user_id: this.settings.user_id,\n login_nonce: this.settings.login_nonce\n };\n try {\n let response = await this.performFetchOp('/save_default_method_totp', sendData);\n if (!response.ok) {\n let error = await response.json();\n this.displayTwoFaOnboardingError(error.error);\n } else {\n let data = await response.json();\n window.location.href = data.redirect_to;\n }\n } catch (error) {\n this.logFetchError(error);\n }\n });\n }\n\n let resendButton = this.getElement('rsssl-two-factor-email-code-resend');\n if (resendButton !== null) {\n resendButton.addEventListener('click', (event) => {\n event.preventDefault();\n const data = {\n user_id: this.settings.user_id,\n login_nonce: this.settings.login_nonce,\n provider: 'email'\n };\n this.performFetchOp('/resend_email_code', data)\n .then(response => {\n return response.json()\n .then(responseData => {\n if (!response.ok) {\n this.displayTwoFaOnboardingError(responseData.error || responseData.message);\n } else {\n this.clearTwoFactorPrompt();\n this.displayTwoFaOnboardingSuccess(responseData.message);\n }\n })\n .catch(jsonErr => {\n console.error('Invalid JSON response:', jsonErr);\n });\n })\n .catch(err => {\n this.logFetchError(err);\n });\n });\n }\n\n let downloadButton = this.getElement('download_codes');\n\n downloadButton.addEventListener('click', (e) => {\n e.preventDefault();\n this.download_codes();\n });\n\n let passkeySubmit = this.getElement('rsssl-register-passkey'); // New Passkey submission handling\n if (passkeySubmit !== null) {\n passkeySubmit.addEventListener('click', (event) => {\n event.preventDefault();\n });\n }\n\n this.getElement('two-factor-qr-code').addEventListener('click', function (e) {\n e.preventDefault();\n that.copyTextAndShowMessage();\n });\n\n this.getElement('totp-key').addEventListener('click', function (e) {\n e.preventDefault();\n that.copyTextAndShowMessage();\n });\n if (document.readyState === 'complete') {\n this.qr_generator();\n\n } else {\n this.qr_generator();\n }\n }\n\n displayTwoFaOnboardingError(error) {\n let loginForm = document.getElementById('two_fa_onboarding_form');\n if (loginForm) {\n let errorDiv = document.getElementById('login-message');\n if(!errorDiv) {\n errorDiv = document.createElement('div');\n errorDiv.id = 'login-message';\n errorDiv.className = 'notice notice-error message';\n loginForm.insertAdjacentElement('beforebegin', errorDiv);\n }\n errorDiv.innerHTML = `<p>${error}</p>`;\n setTimeout(() => {\n // removing the error box from the loginForm\n errorDiv.remove();\n }, 5000);\n }\n }\n\n displayTwoFaOnboardingSuccess(message) {\n let loginForm = document.getElementById('two_fa_onboarding_form');\n if (loginForm) {\n let messageDiv = document.getElementById('login-message-success');\n if (!messageDiv) {\n messageDiv = document.createElement('div');\n messageDiv.id = 'login-message-success';\n messageDiv.className = 'notice notice-success message';\n loginForm.insertAdjacentElement('beforebegin', messageDiv);\n }\n messageDiv.innerHTML = `<p>${message}</p>`;\n setTimeout(() => {\n messageDiv.remove();\n }, 5000);\n }\n }\n\n clearTwoFactorPrompt() {\n // Select elements by class name without the dot prefix\n let elements = document.getElementsByClassName('two-factor-prompt');\n for (let i = 0; i < elements.length; i++) {\n // Clear the content of each element\n elements[i].innerHTML = '';\n // Optionally hide the element\n elements[i].style.display = 'none';\n }\n }\n}\nexport default Onboarding;","\nimport BaseAuth from './BaseAuth';\nimport Passkey from \"./passkey\";\n\nclass Login_Passkey extends BaseAuth {\n\n constructor(root, settings) {\n super(root, settings);\n this.root = root;\n this.settings = settings;\n this.passkey = new Passkey(root, settings);\n }\n init() {\n // we get the element by name rsssl_validate_2fa_form\n const form = document.getElementsByName('rsssl_validate_2fa_form');\n\n if (!form.length) {\n this.addPasskeyButton();\n } else {\n // We check if the passkey button is already added\n const passkeyButton = document.getElementById('rsssl-passkey-button');\n if (passkeyButton) {\n // If it is, we we check if the data-autorun is enabled\n if (passkeyButton.getAttribute('data-autorun') === 'enabled') {\n this.passkey.handlePasskeyLogin();\n }\n }\n }\n }\n\n addPasskeyButton() {\n const loginForm = document.getElementById('loginform');\n if (loginForm) {\n const submitButton = loginForm.querySelector('p.submit');\n if (submitButton) {\n const passkeyButtonContainer = document.createElement('div');\n passkeyButtonContainer.id = 'rsssl-passkey-button-container';\n passkeyButtonContainer.style.display = 'flex';\n passkeyButtonContainer.style.justifyContent = 'center';\n passkeyButtonContainer.style.alignItems = 'center';\n\n const passkeyButton = document.createElement('button');\n passkeyButton.id = 'passkey-login-button';\n passkeyButton.className = 'button button-primary';\n passkeyButton.innerText = this.settings.translatables.log_in_with_passkey;\n\n const orDivider = document.createElement('div');\n orDivider.className = 'or-divider';\n orDivider.innerHTML = '<span>' + this.settings.translatables.or + '</span>';\n\n // creating the lock icon\n const lockIcon = document.createElement('span');\n lockIcon.className = 'dashicons dashicons-lock';\n lockIcon.style.marginRight = '5px';\n\n // Add the lock icon to the passkey button before the text\n passkeyButton.insertBefore(lockIcon, passkeyButton.firstChild);\n passkeyButton.style.display = 'flex';\n passkeyButton.style.alignItems = 'center';\n passkeyButton.style.justifyContent = 'center';\n\n // Insert the custom divider after the submit button\n submitButton.parentNode.insertBefore(orDivider, submitButton.nextSibling);\n\n passkeyButtonContainer.appendChild(passkeyButton);\n\n // Append the passkey button after the custom divider\n submitButton.parentNode.insertBefore(passkeyButtonContainer, orDivider.nextSibling);\n\n // Error display below the passkey button\n const errorContainer = document.createElement('div');\n errorContainer.id = 'rsssl-passkey-error';\n errorContainer.style.display = 'none';\n errorContainer.style.color = 'red';\n errorContainer.style.fontSize = '12px';\n errorContainer.style.marginTop = '10px';\n errorContainer.style.textAlign = 'center';\n errorContainer.style.width = '100%';\n errorContainer.style.wordWrap = 'break-word';\n errorContainer.style.wordBreak = 'break-all';\n\n // Move this line to ensure errorContainer is appended outside any flex elements\n submitButton.parentNode.insertBefore(errorContainer, passkeyButtonContainer.nextSibling);\n\n // Add event listener to the passkey button using an arrow function to maintain the context of 'this'\n passkeyButton.addEventListener('click', (event) => {\n this.passkey.handlePasskeyLogin(event);\n });\n }\n }\n }\n}\nexport default Login_Passkey;\n","// Disable all beforeunload handlers to prevent \"Leave site?\" prompts\n(function() {\n // Prevent any assignment to window.onbeforeunload\n Object.defineProperty(window, 'onbeforeunload', {\n configurable: true,\n get() { return null; },\n set() { /* no-op */ }\n });\n // Block registration of beforeunload event listeners\n const origAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function(type, listener, options) {\n if (type === 'beforeunload') {\n return;\n }\n return origAddEventListener.call(this, type, listener, options);\n };\n})();\n\nimport BaseAuth from \"./BaseAuth\";\n\nclass PasskeyTableManager extends BaseAuth {\n removeUrl = '/webauthn_delete_credential';\n\n init() {\n this.tableContainer = document.getElementById('rsssl-passkey-table-container');\n this.initEventListeners();\n\n // ► Now fetch & render your table\n this.fetchDataAndRender();\n }\n\n initEventListeners() {\n document.addEventListener('click', (event) => {\n if (event.target.matches('.rsssl-remove-passkey')) {\n this.handleRemove(event.target.dataset.deviceId);\n }\n });\n }\n\n renderPasskeyTable(rows) {\n const tableHTML = this.buildTableRows(rows, rows.length);\n const tableBody = document.getElementById('rsssl-passkey-list');\n tableBody.innerHTML = tableHTML;\n }\n\n buildTableRows(rows, count) {\n let output = '';\n rows.forEach(row => {\n output += `\n <tr>\n <td>${row.authDeviceId}</td>\n <td>${row.created_at}</td>\n <td>${row.updated_at}</td>\n <td>\n <button type=\"button\" class=\"button rsssl-remove-passkey\" ${count === 1 ? 'disabled' : ''} data-device-id=\"${row.id}\" style=\"display:inline;\">Remove</button>\n </td>\n </tr>\n `;\n });\n return output;\n }\n fetchDataAndRender() {\n return this.performFetchOp('/webauthn_get_all_credentials', {user_id: this.settings.user_id, login_nonce: this.settings.login_nonce})\n .then(response => response.json())\n .then(data => {\n if (data.success) {\n this.renderPasskeyTable(data.data.rows);\n } else {\n console.error('Failed to fetch passkey data:', data);\n }\n })\n .catch(this.logFetchError);\n }\n\n handleRemove(entry_id) {\n this.performFetchOp(this.removeUrl, {entry_id: entry_id, user_id: this.settings.user_id, provider: 'passkey', login_nonce: this.settings.login_nonce})\n .then(response => response.json())\n .then(data => {\n if (data.success) {\n this.fetchDataAndRender();\n } else {\n console.error('Failed to remove passkey:', data);\n }\n })\n .catch(this.logFetchError);\n }\n\n logFetchError(error) {\n console.error('Fetch error:', error);\n }\n}\n\nexport default PasskeyTableManager;","import {client} from '@passwordless-id/webauthn';\nimport BaseAuth from './BaseAuth';\nimport base64url from 'base64url';\nimport {Decoder as cbor} from \"cbor\";\nimport PasskeyTableManager from \"./passkey-table-manager\";\n\nconst BUTTON_CLASSES = {\n pending: ['success', 'failed', 'login', 'login-failed'],\n success: ['pending', 'failed', 'login', 'login-failed'],\n failed: ['pending', 'success', 'login', 'login-failed'],\n login: ['pending', 'success', 'failed', 'login-failed'],\n 'login-failed': ['pending', 'success', 'failed', 'login'],\n};\n\nconst knownAuthenticators = {\n 'ea9b8d664d011d213ce4b6b48cb575d4': 'Google Password Manager',\n 'adce000235bcc60a648b0b25f1f05503': 'Chrome on Mac',\n '08987058cadc4b81b6e130de50dcbe96': 'Windows Hello',\n '9ddd1817af5a4672a2b93e3dd95000a9': 'Windows Hello',\n '6028b017b1d44c02b4b3afcdafc96bb2': 'Windows Hello',\n 'dd4ec289e01d41c9bb8970fa845d4bf2': 'iCloud Keychain (Managed)',\n '531126d6e717415c93203d9aa6981239': 'Dashlane',\n 'bada5566a7aa401fbd9645619a55120d': '1Password',\n 'b84e404815dc4dd08640f4f60813c8af': 'NordPass',\n '0ea242b443c44a1b8b17dd6d0b6baec6': 'Keeper',\n '891494da2c904d31a9cd4eab0aed1309': 'Sésame',\n 'f38095407f1449c1a8b38f813b225541': 'Enpass',\n 'b53976664885aa6bcebf-e52262a439a2': 'Chromium Browser',\n '771b48fdd3d44f749232fc157ab0507a': 'Edge on Mac',\n '39a5647e1853446ca1f6a79bae9f5bc7': 'IDmelon',\n 'd548826e79b4db40a3d811116f7e8349': 'Bitwarden',\n 'fbfc3007154e4ecc8c0b6e020557d7bd': 'iCloud Keychain',\n '53414d53554e47000000000000000000': 'Samsung Pass',\n '66a0ccb3bd6a191fee06e375c50b9846': 'Thales Bio iOS SDK',\n '8836336af5900921301d46427531eee6': 'Thales Bio Android SDK',\n 'cd69adb53c7adeb931776800ea6cb72a': 'Thales PIN Android SDK',\n '17290f1ec21234d01423365d729f09d9': 'Thales PIN iOS SDK',\n '50726f746f6e5061737350726f746f6e': 'Proton Pass',\n 'fdb141b25d84443e8a354698c205a502': 'KeePassXC',\n 'cc45f64e52a2451b831a4edd8022a202': 'ToothPic Passkey Provider'\n};\n\nclass Passkey extends BaseAuth {\n constructor(root, settings) {\n super(root, settings);\n this.passkey = '';\n this.onboarding = false;\n this.manager = new PasskeyTableManager(this.root, this.settings);\n this.translate = {\n webauthn_not_available: this.settings.translatables.webauthn_not_available,\n unknown_error: this.settings.translatables.unknown_error,\n response_error: this.settings.translatables.response_error,\n passkey_not_found: this.settings.translatables.passkey_not_found,\n passkey_login_error: this.settings.translatables.passkey_login_error,\n passkey_registration_error: this.settings.translatables.passkey_registration_error,\n passkey_login_success: this.settings.translatables.passkey_login_success,\n passkey_configuration: this.settings.translatables.passkey_configuration,\n error_assertion: this.settings.translatables.error_assertion,\n notice_inform: this.settings.translatables.notice_inform,\n register_passkey: this.settings.translatables.register_passkey,\n network_not_ok: this.settings.translatables.network_not_ok,\n error_complete_registration: this.settings.translatables.error_complete_registration,\n usb: this.settings.translatables.usb,\n nfc: this.settings.translatables.nfc,\n ble: this.settings.translatables.ble,\n internal: this.settings.translatables.internal,\n cross_platform: this.settings.translatables.cross_platform,\n unknown: this.settings.translatables.unknown,\n pending: this.settings.translatables.pending,\n success: this.settings.translatables.success,\n login: this.settings.translatables.login,\n login_failed: this.settings.translatables.login_failed,\n passkey_configure_manual_login: this.settings.translatables.passkey_configure_manual_login,\n }\n this.BUTTON_TEXT = {\n pending: this.settings.translatables.pending,\n success: this.settings.translatables.success,\n failed: this.settings.translatables.failed,\n login: this.settings.translatables.login,\n 'login-failed': this.settings.translatables.login_failed,\n };\n }\n\n init() {\n const stepThree = this.getElement('rsssl_step_three_onboarding');\n\n if (stepThree !== null) {\n const observer = new MutationObserver(this.handleMutation.bind(this));\n observer.observe(stepThree, {attributes: true});\n }\n\n if (document.getElementById('rsssl-add-passkey-button')) {\n this.assignClickListener('rsssl-add-passkey-button', this.handlePasskeyRegister.bind(this));\n }\n }\n\n handleMutation(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'style') {\n const displayStyle = window.getComputedStyle(mutation.target).display;\n if (displayStyle === 'block') {\n this.showPasskeyOptions();\n }\n }\n });\n }\n\n logButtonState = (id) => {\n return document.getElementById(id);\n }\n updateRegisterButtonState(state) {\n setTimeout(() => {\n let workButton = this.logButtonState('register-passkey-button')\n || this.logButtonState('rsssl-passkey-button')\n || this.logButtonState('rsssl-add-passkey-button');\n if (!workButton) return;\n\n workButton.innerHTML = this.BUTTON_TEXT[state] || 'Unknown State';\n workButton.disabled = state === 'pending';\n workButton.classList.remove(...(BUTTON_CLASSES[state] || []));\n workButton.classList.add(state);\n // If login failed on the passkey button, make click retry the login challenge\n if (state === 'login-failed' && workButton.id === 'rsssl-passkey-button') {\n workButton.type = 'button';\n workButton.addEventListener('click', e => {\n e.preventDefault();\n this.handlePasskeyLogin();\n });\n }\n if (!this.BUTTON_TEXT[state]) {\n console.error('Unknown state:', state);\n }\n }, 100); // Adjust the timeout duration as necessary\n }\n\n async handlePasskeyLogin() {\n this.updateRegisterButtonState('login');\n\n if (!client.isAvailable()) {\n this.handleError(this.translate.webauthn_not_available, 'login-failed');\n return;\n }\n\n try {\n const userHandle = localStorage.getItem('webauthn_user_handle');\n const userNameElement = document.getElementById('user_login');\n const user_login = userNameElement ? userNameElement.value : '';\n const requestData = {credentials: 'include', userHandle, user_login};\n\n const response = await this.performFetchOp('/webauthn_challenge_assertion', requestData);\n\n if (!response.ok) {\n if (response.status === 400) {\n try {\n const errorData = await response.json();\n if (errorData && errorData.error) {\n this.handleError(errorData.error, 'login-failed');\n } else {\n this.handleError(this.translate.passkey_configure_manual_login, 'login-failed');\n }\n } catch (jsonError) {\n this.handleError(this.translate.passkey_configure_manual_login, 'login-failed');\n }\n return;\n }\n // Handle other non-OK responses\n try {\n const errorData = await response.json(); \n if (errorData && errorData.error) {\n this.handleError(errorData.error, 'login-failed');\n } else {\n this.handleError(this.translate.unknown_error, 'login-failed'); \n }\n } catch (error) {\n console.error('Failed to parse JSON from other error response or unknown error:', error);\n this.handleError(this.translate.response_error, 'login-failed');\n }\n return; // Ensure we exit after handling non-OK responses\n }\n const publicKeyCredentialRequestOptions = await this.prepareCredentialRequest(response, userHandle);\n const assertion = await navigator.credentials.get({publicKey: publicKeyCredentialRequestOptions});\n await this.sendAssertion(assertion);\n } catch (error) {\n if (error.name === 'NotAllowedError') {\n this.handleError(this.translate.passkey_not_found, 'login-failed');\n } else {\n this.handleError(this.translate.passkey_login_error, 'login-failed', error);\n }\n }\n }\n\n async prepareCredentialRequest(response, userHandle) {\n const options = await response.json();\n options.challenge = base64url.toBuffer(options.challenge);\n\n if (options.allowCredentials) {\n options.allowCredentials = options.allowCredentials.map(cred => ({\n ...cred,\n id: base64url.toBuffer(cred.id),\n }));\n }\n\n if (userHandle) {\n options.userHandle = base64url.toBuffer(userHandle);\n }\n\n return options;\n }\n\n async sendAssertion(assertion) {\n const data = {\n credential: {\n id: assertion.id,\n rawId: base64url.encode(assertion.rawId),\n response: {\n authenticatorData: base64url.encode(assertion.response.authenticatorData),\n clientDataJSON: base64url.encode(assertion.response.clientDataJSON),\n signature: base64url.encode(assertion.response.signature),\n userHandle: base64url.encode(assertion.response.userHandle),\n },\n type: assertion.type,\n },\n onboarding: this.onboarding,\n redirect_to: this.settings.redirect_to,\n };\n\n try {\n console.log('Attempting /webauthn_verify_assertion with data:', data);\n const response = await this.performFetchOp('/webauthn_verify_assertion', data);\n \n if (!response.ok) {\n console.log('/webauthn_verify_assertion failed with status:', response.status);\n if (response.status === 400) {\n console.log('Handling 400 error from /webauthn_verify_assertion');\n try {\n const errorData = await response.json();\n if (errorData && errorData.error) {\n console.log('400 error data from verify_assertion:', errorData);\n this.handleError(errorData.error, 'login-failed');\n } else {\n console.log('400 error from verify_assertion, but no specific error message in JSON. Falling back to manual configure message.');\n this.handleError(this.translate.passkey_configure_manual_login, 'login-failed');\n }\n } catch (jsonError) {\n console.error('Failed to parse JSON from 400 error response (verify_assertion):', jsonError);\n this.handleError(this.translate.passkey_configure_manual_login, 'login-failed');\n }\n } else {\n // Handle other non-400 errors for verify_assertion\n const result = await response.json(); // Attempt to parse for other errors too\n console.log('Error during /webauthn_verify_assertion, result:', result);\n this.handleError(result.message || this.translate.error_assertion, 'login-failed');\n }\n return; // Exit after handling error\n }\n\n // If response.ok is true\n const result = await response.json();\n console.log('/webauthn_verify_assertion response result:', result);\n\n if (result.status === 'success') {\n this.updateRegisterButtonState('success');\n if (result.redirect_to.includes('rsssl_no_redirect')) {\n this.manager.fetchDataAndRender();\n } else {\n const form = document.querySelector('form');\n if (form) {\n form.reset();\n }\n window.onbeforeunload = null;\n window.location.href = result.redirect_to;\n }\n } else {\n this.updateRegisterButtonState('login-failed');\n }\n } catch (error) {\n console.error('Error in sendAssertion catch block:', error);\n this.handleError(this.translate.error_assertion, 'login-failed', error);\n }\n }\n\n showPasskeyOptions() {\n // first we change the h3 text and the p text with the instructions\n const mainElement = this.getElement('two_fa_onboarding_form');\n if (mainElement) {\n mainElement.querySelector('h3').innerText = this.settings.translatables.passkey_configuration;\n document.querySelector('.rsssl_into_two_factor').innerHTML = this.settings.translatables.notice_inform;\n }\n // this.getElement('rsssl_step_three_onboarding').getElement('rsssl_into_two_factor').innerText = 'rsssl_into_two_factor';\n let container = this.getElement('passkey-integration');\n if (!container) {\n container = document.createElement('div');\n container.id = 'passkey-integration';\n document.body.appendChild(container);\n }\n\n container.innerHTML = `<button id=\"register-passkey-button\" class=\"passkey-registration-button\">${this.settings.translatables.register_passkey}</button>`;\n this.assignClickListener('register-passkey-button', this.handlePasskeyRegister.bind(this));\n }\n\n async handlePasskeyRegister() {\n // We prevent the default behavior of the button to avoid form submission\n this.updateRegisterButtonState('pending');\n if (!client.isAvailable()) {\n this.handleError(this.settings.translatables.webauthn_not_available, 'failed');\n return;\n }\n\n try {\n const publicKeyCreationOptions = await this.fetchPublicKeyOptions();\n const credential = await navigator.credentials.create({publicKey: publicKeyCreationOptions});\n const registrationResult = await this.completeRegistration(credential);\n if (registrationResult.status !== 'success') {\n this.updateRegisterButtonState('failed');\n }\n if (registrationResult.redirect_to.includes('rsssl_no_redirect')) {\n // we reload the page to show the new profile\n const form = document.querySelector('form');\n if (form) {\n form.reset();\n }\n window.onbeforeunload = null;\n window.location.reload();\n } else {\n const form = document.querySelector('form');\n if (form) {\n form.reset();\n }\n window.onbeforeunload = null;\n window.location.href = registrationResult.redirect_to;\n }\n } catch (error) {\n this.handleError(this.translate.error_complete_registration, 'failed', error);\n }\n }\n\n async fetchPublicKeyOptions() {\n const response = await this.performFetchOp('/webauthn_register_callback', {\n user_id: this.settings.user_id,\n login_nonce: this.settings.login_nonce,\n provider: 'passkey_register',\n });\n\n if (!response.ok) throw new Error(this.translate.network_not_ok);\n\n const options = await response.json();\n\n base64url.toBuffer(this.generateUniqueUserHandle());\n options.challenge = base64url.toBuffer(options.challenge); // challenge as Uint8Array\n options.user.id = base64url.toBuffer(options.user.id); // user.id as Uint8Array\n options.user.name = this.settings.display_name || options.user.name;\n options.user.displayName = this.settings.display_name || options.user.displayName;\n options.pubKeyCredParams = [{type: 'public-key', alg: -7}, {type: 'public-key', alg: -257}];\n options.rp.id = window.location.hostname;\n options.authenticatorSelection = {authenticatorAttachment: 'platform', userVerification: 'preferred'};\n\n return options;\n }\n\n async completeRegistration(credential) {\n const deviceName = this.getDeviceName(credential);\n\n const data = {\n credential: {\n id: credential.id,\n rawId: base64url.encode(credential.rawId),\n response: {\n attestationObject: base64url.encode(credential.response.attestationObject),\n clientDataJSON: base64url.encode(credential.response.clientDataJSON),\n },\n type: credential.type,\n authDevice: deviceName,\n },\n user_id: this.settings.user_id,\n redirect_to: this.settings.redirect_to,\n device_name: deviceName,\n login_nonce: this.settings.login_nonce,\n };\n\n try {\n const response = await this.performFetchOp('/webauthn_complete_registration', data);\n const result = await response.json();\n\n if (response.ok && result.status === 'success') {\n if (result.userHandle) {\n localStorage.setItem('webauthn_user_handle', result.userHandle);\n }\n this.updateRegisterButtonState('success');\n this.onboarding = true;\n await this.handlePasskeyLogin();\n return {status: 'success', redirect_to: result.redirect_to};\n } else {\n return {status: 'failed', reason: 'registration_failed'};\n }\n } catch (error) {\n this.handleError(this.translate.error_complete_registration, 'failed', error);\n return {status: 'failed', reason: 'error_occurred'};\n }\n }\n\n async fireRegistration(automatic = true) {\n if (automatic) {\n const result = await this.handlePasskeyRegister();\n this.updateRegisterButtonState(result.status === 'success' ? 'success' : 'failed');\n } else {\n this.assignClickListener('register-passkey-button', this.handlePasskeyRegister.bind(this));\n }\n }\n\n handleError(message, state, error = null) {\n this.updateRegisterButtonState(state);\n // show the error message in the error container\n const errorContainer = this.getElement('rsssl-passkey-error');\n if (errorContainer) {\n errorContainer.innerText = message;\n errorContainer.style.display = 'block';\n }\n console.error(message, error);\n }\n\n getDeviceName(credential) {\n let deviceName = 'unknown';\n let authenticatorAttachment = credential.authenticatorAttachment || 'unknown';\n\n const attestationObject = credential.response.attestationObject;\n\n // Decode the attestation object\n const decodedAttestationObject = cbor.decodeAllSync(new Uint8Array(attestationObject))[0];\n const authData = new Uint8Array(decodedAttestationObject.authData);\n\n // Extract the aaguid (bytes 37-52 of authData)\n const aaguid = authData.slice(37, 53);\n const aaguidString = Array.from(aaguid).map(byte => byte.toString(16).padStart(2, '0')).join('');\n if (knownAuthenticators[aaguidString]) {\n return knownAuthenticators[aaguidString];\n }\n\n if (typeof credential.response.getTransports === 'function') {\n const transports = credential.response.getTransports();\n if (transports && transports.length > 0) {\n authenticatorAttachment = transports[0]; // Use the first available transport method\n }\n }\n\n switch (authenticatorAttachment) {\n case 'usb':\n deviceName = this.settings.translatables.usb;\n break;\n case 'nfc':\n deviceName = this.settings.translatables.nfc;\n break;\n case 'ble':\n deviceName = this.settings.translatables.ble;\n break;\n case 'internal':\n deviceName = this.settings.translatables.internal;\n break;\n case 'cross-platform':\n deviceName = this.settings.translatables.cross_platform;\n break;\n default:\n deviceName = this.settings.translatables.unknown;\n }\n return deviceName;\n }\n\n generateUniqueUserHandle() {\n return `${this.settings.user_id}-${Date.now()}`;\n }\n}\nexport default Passkey;","import BaseAuth from './BaseAuth'\nimport Passkey from \"./passkey\";\n\nclass Profile extends BaseAuth {\n init() {\n\n this.assignClickListener('download_codes', this.download_codes);\n this.assignClickListener('two-factor-qr-code', this.copyTextAndShowMessage);\n this.assignClickListener('totp-key', this.copyTextAndShowMessage);\n\n const qrCodeContainer = this.getElement('qr-code-container');\n const enableCheckbox = this.getElement('two-factor-authentication');\n const tableRowSelection = this.getElement('selection_two_fa');\n const methodSelection = document.querySelectorAll('input[name=\"preferred_method\"]');\n const validationEmail = document.getElementById('rsssl_verify_email');\n const change2faConfig = this.getElement('change_2fa_config');\n const passKeyContainer = this.getElement('rsssl_step_three_onboarding');\n const passkeySection = this.getElement('passkey-table');\n this.passkey = new Passkey(this.root, this.settings);\n // Temporarily disable WP beforeunload handler to avoid \"Leave site?\" prompt on load\n const origBeforeUnload = window.onbeforeunload;\n window.onbeforeunload = null;\n this.passkey.init();\n // Restore WP beforeunload handler after passkey UI initialization\n window.onbeforeunload = origBeforeUnload;\n // Clear WordPress unsaved-changes flag by dispatching a reset event on the profile form\n const profileForm = document.getElementById('your-profile');\n if (profileForm) {\n profileForm.dispatchEvent(new Event('reset'));\n }\n let that = this;\n const thereIsAnAddDevice = document.getElementById('rsssl_add_device');\n if (thereIsAnAddDevice) {\n that.passkey.fireRegistration(false).then(r => {\n if (r) {\n this.getElement('rsssl_step_three_onboarding').style.display = 'none';\n this.getElement('rsssl_step_four_onboarding').style.display = 'block';\n }\n });\n }\n if (qrCodeContainer) {\n qrCodeContainer.style.display = \"none\";\n if (!enableCheckbox.checked) {\n tableRowSelection.style.display = \"none\";\n qrCodeContainer.style.display = \"none\";\n }\n }\n if(enableCheckbox) {\n let parent = this;\n enableCheckbox.addEventListener(\"change\", function () {\n if (this.checked) {\n tableRowSelection.style.display = \"table-row\";\n let selectedMethod = document.querySelector('input[name=\"preferred_method\"]:checked');\n if (selectedMethod && selectedMethod.value === \"totp\") {\n qrCodeContainer.style.display = \"block\";\n parent.qr_generator();\n } else {\n qrCodeContainer.style.display = \"none\";\n }\n } else {\n tableRowSelection.style.display = \"none\";\n qrCodeContainer.style.display = \"none\";\n let selectedMethod = document.querySelector('input[name=\"preferred_method\"]:checked');\n selectedMethod.value = \"none\";\n }\n });\n }\n\n if(methodSelection.length > 0 ) {\n let parent = this;\n methodSelection.forEach(function (element) {\n element.addEventListener(\"change\", function () {\n let selectedMethod = document.querySelector('input[name=\"preferred_method\"]:checked').value;\n if (selectedMethod === \"totp\") {\n if(validationEmail) {\n validationEmail.style.display = \"none\";\n }\n qrCodeContainer.style.display = \"block\";\n parent.qr_generator();\n } else if(selectedMethod === \"email\") {\n qrCodeContainer.style.display = \"none\";\n if(validationEmail) {\n validationEmail.style.display = \"table-row\";\n }\n let data = {\n action: 'change_method_to_email',\n provider: selectedMethod,\n user_id: rsssl_profile.user_id,\n login_nonce: document.getElementById('rsssl_two_fa_nonce').value,\n redirect_to: rsssl_profile.redirect_to,\n profile: true\n };\n fetch(rsssl_profile.ajax_url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'\n },\n body: new URLSearchParams(data)\n })\n .then(response => response.json())\n .then(responseData => {\n // Expected structure: { success: true, data: { message: \"Verification code sent\", token: ... } }\n let errorDiv = document.getElementById('login-message');\n let inPutField = document.getElementById('rsssl-two-factor-email-code');\n if (inPutField) {\n if (!errorDiv) {\n errorDiv = document.createElement('p');\n errorDiv.classList.add('notice', 'notice-success');\n inPutField.insertAdjacentElement('afterend', errorDiv);\n }\n // Use the message returned from your PHP callback\n if (responseData.data.message) {\n errorDiv.innerHTML = `<p>${responseData.data.message}</p>`;\n } else {\n console.error('No message returned from the server.');\n }\n // Optionally, do something with responseData.data.token if needed.\n setTimeout(() => {\n errorDiv.remove();\n }, 5000);\n }\n })\n .catch(that.logFetchError);\n }else if (selectedMethod === \"passkey\") {\n qrCodeContainer.style.display = \"none\";\n passKeyContainer.style.display = \"block\";\n passkeySection.style.opacity = \"1\";\n that.passkey.fireRegistration().then(r => {\n if (r) {\n this.getElement('rsssl_step_three_onboarding').style.display = 'none';\n this.getElement('rsssl_step_four_onboarding').style.display = 'block';\n }\n });\n } else {\n qrCodeContainer.style.display = \"none\";\n }\n });\n });\n }\n\n let resendButton = this.getElement('rsssl_resend_code_action');\n if(resendButton !== null) {\n resendButton.addEventListener('click', (event) => {\n event.preventDefault();\n let data = {\n action: 'resend_email_code_profile',\n user_id: this.settings.user_id,\n login_nonce: document.getElementById('rsssl_two_fa_nonce').value,\n provider: 'email',\n profile: true\n };\n let ajaxUrl = rsssl_profile.ajax_url;\n fetch(ajaxUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'\n },\n body: new URLSearchParams(data)\n })\n .then(response => response.json())\n .then(responseData => {\n // responseData will have the structure: { success: true, data: { message: \"...\" } }\n let errorDiv = document.getElementById('login-message');\n let inPutField = document.getElementById('rsssl-two-factor-email-code');\n if (inPutField) {\n if (!errorDiv) {\n errorDiv = document.createElement('p');\n errorDiv.classList.add('notice', 'notice-success');\n inPutField.insertAdjacentElement('afterend', errorDiv);\n }\n errorDiv.innerHTML = `<p>${responseData.data.message}</p>`;\n // Fade out the message after 5 seconds.\n setTimeout(() => {\n errorDiv.remove();\n }, 5000);\n }\n })\n .catch(this.logFetchError);\n });\n }\n\n\n if (change2faConfig) {\n change2faConfig.addEventListener('click', function (e) {\n e.preventDefault();\n let inputField = document.createElement('input');\n inputField.setAttribute('type', 'hidden');\n inputField.setAttribute('name', 'change_2fa_config_field');\n inputField.setAttribute('value', 'true');\n document.getElementById('change_2fa_config').insertAdjacentElement('afterend', inputField);\n // we uncheck Enable Two-Factor Authentication\n let enableCheckbox = document.getElementById(\"two-factor-authentication\");\n enableCheckbox.checked = false;\n let profileForm = document.getElementById('your-profile');\n if (profileForm) {\n profileForm.requestSubmit();\n }\n });\n }\n }\n fetchPasskeyData() {\n const urlExtension = '/webauthn_get_all_credentials';\n const data = {\n nonce: this.settings.nonce,\n user_id: this.settings.user_id,\n user: this.settings.user,\n provider: 'passkey',\n login_nonce: document.getElementById('rsssl_two_fa_nonce').value,\n };\n\n this.performFetchOp(urlExtension, data)\n .then(response => response.json())\n .then(data => {\n if (data.success) {\n this.renderPasskeyTable(data.data.rows);\n } else {\n console.error('Failed to fetch passkey data:', data);\n }\n })\n .catch(this.logFetchError);\n }\n\n renderPasskeyTable(rows) {\n const tableBody = this.getElement('the-list'); // Replace with your actual table body ID\n tableBody.innerHTML = 'bakfiets';\n // Create HTML string from rows array\n tableBody.innerHTML = rows.map(row => `\n <tr>\n <td>${row.device_name}</td>\n <td>${row.registered}</td>\n <td>${row.last_used}</td>\n <td>${row.actions}</td>\n </tr>\n `).join('');\n }\n}\n\nexport default Profile;","import BaseAuth from \"./BaseAuth\";\nimport Passkey from \"./passkey\";\n\nclass Validate extends BaseAuth {\n constructor(root, settings) {\n super(root, settings);\n this.root = root;\n this.settings = settings;\n this.passkey = new Passkey(this.root, this.settings);\n }\n\n init() {\n this.passkey.init();\n //Validate button\n const validateButton = document.getElementById('rsssl-passkey-button');\n if (validateButton) {\n validateButton.addEventListener('click', (event) => {\n event.preventDefault();\n this.passkey.handlePasskeyLogin(event);\n });\n }\n }\n}\n\nexport default Validate;","'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\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n 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 =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\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 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 parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction padString(input) {\n var segmentLength = 4;\n var stringLength = input.length;\n var diff = stringLength % segmentLength;\n if (!diff) {\n return input;\n }\n var position = stringLength;\n var padLength = segmentLength - diff;\n var paddedStringLength = stringLength + padLength;\n var buffer = Buffer.alloc(paddedStringLength);\n buffer.write(input);\n while (padLength--) {\n buffer.write(\"=\", position++);\n }\n return buffer.toString();\n}\nexports.default = padString;\n","module.exports = require('./dist/base64url').default;\nmodule.exports.default = module.exports;\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * 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 * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\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 // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\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(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(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 interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(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(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\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(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(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.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 buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.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 === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let 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 (!Array.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 let 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 const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\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 (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let 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 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) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let 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 coercion 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// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let 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 const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let 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 const length = this.length\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.toLocaleString = Buffer.prototype.toString\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 let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\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 let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let 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 (numberIsNaN(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 (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 let indexSize = 1\n let arrLength = arr.length\n let 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 let i\n if (dir) {\n let 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 let found = true\n for (let 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 const 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 const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(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 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 } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const 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 let 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 case 'latin1':\n case 'binary':\n return asciiWrite(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 const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let 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\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const 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 let res = ''\n let 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 let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; 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 const 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 const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\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 =\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 let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\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 let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\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 =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\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.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\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 let val = this[offset]\n let mul = 1\n let 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 let i = byteLength\n let mul = 1\n let 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 offset = offset >>> 0\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 offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\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 offset = offset >>> 0\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.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let 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 =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let 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 =\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 this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\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 this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let 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 const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let 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 (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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\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 value = +value\n offset = offset >>> 0\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 value = +value\n offset = offset >>> 0\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 (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\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('Index out of range')\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 const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\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 (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 if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\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 let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().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 utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let 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 const byteArray = []\n for (let 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 let c, hi, lo\n const byteArray = []\n for (let 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 let i\n for (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\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict'\n\nconst Commented = require('./commented')\nconst Diagnose = require('./diagnose')\nconst Decoder = require('./decoder')\nconst Encoder = require('./encoder')\nconst Simple = require('./simple')\nconst Tagged = require('./tagged')\nconst Map = require('./map')\nconst SharedValueEncoder = require('./sharedValueEncoder')\n\nmodule.exports = {\n Commented,\n Diagnose,\n Decoder,\n Encoder,\n Simple,\n Tagged,\n Map,\n SharedValueEncoder,\n\n /**\n * Convenience name for {@linkcode Commented.comment}.\n */\n comment: Commented.comment,\n\n /**\n * Convenience name for {@linkcode Decoder.decodeAll}.\n */\n decodeAll: Decoder.decodeAll,\n\n /**\n * Convenience name for {@linkcode Decoder.decodeFirst}.\n */\n decodeFirst: Decoder.decodeFirst,\n\n /**\n * Convenience name for {@linkcode Decoder.decodeAllSync}.\n */\n decodeAllSync: Decoder.decodeAllSync,\n\n /**\n * Convenience name for {@linkcode Decoder.decodeFirstSync}.\n */\n decodeFirstSync: Decoder.decodeFirstSync,\n\n /**\n * Convenience name for {@linkcode Diagnose.diagnose}.\n */\n diagnose: Diagnose.diagnose,\n\n /**\n * Convenience name for {@linkcode Encoder.encode}.\n */\n encode: Encoder.encode,\n\n /**\n * Convenience name for {@linkcode Encoder.encodeCanonical}.\n */\n encodeCanonical: Encoder.encodeCanonical,\n\n /**\n * Convenience name for {@linkcode Encoder.encodeOne}.\n */\n encodeOne: Encoder.encodeOne,\n\n /**\n * Convenience name for {@linkcode Encoder.encodeAsync}.\n */\n encodeAsync: Encoder.encodeAsync,\n\n /**\n * Convenience name for {@linkcode Decoder.decodeFirstSync}.\n */\n decode: Decoder.decodeFirstSync,\n\n /**\n * The codec information for\n * {@link https://github.com/Level/encoding-down encoding-down}, which is a\n * codec framework for leveldb. CBOR is a particularly convenient format for\n * both keys and values, as it can deal with a lot of types that JSON can't\n * handle without losing type information.\n *\n * @example\n * const level = require('level')\n * const cbor = require('cbor')\n *\n * async function putget() {\n * const db = level('./db', {\n * keyEncoding: cbor.leveldb,\n * valueEncoding: cbor.leveldb,\n * })\n *\n * await db.put({a: 1}, 9857298342094820394820394820398234092834n)\n * const val = await db.get({a: 1})\n * }\n */\n leveldb: {\n decode: Decoder.decodeFirstSync,\n encode: Encoder.encode,\n buffer: true,\n name: 'cbor',\n },\n\n /**\n * Reset everything that we can predict a plugin might have altered in good\n * faith. For now that includes the default set of tags that decoding and\n * encoding will use.\n */\n reset() {\n Encoder.reset()\n Tagged.reset()\n },\n}\n","'use strict'\n\nconst stream = require('stream')\nconst utils = require('./utils')\nconst Decoder = require('./decoder')\nconst NoFilter = require('nofilter')\nconst {MT, NUMBYTES, SYMS} = require('./constants')\nconst {Buffer} = require('buffer')\n\nfunction plural(c) {\n if (c > 1) {\n return 's'\n }\n return ''\n}\n\n/**\n * @typedef CommentOptions\n * @property {number} [max_depth=10] How many times to indent\n * the dashes.\n * @property {number} [depth=1] Initial indentation depth.\n * @property {boolean} [no_summary=false] If true, omit the summary\n * of the full bytes read at the end.\n * @property {object} [tags] Mapping from tag number to function(v),\n * where v is the decoded value that comes after the tag, and where the\n * function returns the correctly-created value for that tag.\n * @property {boolean} [preferWeb=false] If true, prefer Uint8Arrays to\n * be generated instead of node Buffers. This might turn on some more\n * changes in the future, so forward-compatibility is not guaranteed yet.\n * @property {BufferEncoding} [encoding='hex'] Encoding to use for input, if it\n * is a string.\n */\n/**\n * @callback commentCallback\n * @param {Error} [error] If one was generated.\n * @param {string} [commented] The comment string.\n * @returns {void}\n */\n/**\n * Normalize inputs to the static functions.\n *\n * @param {CommentOptions|commentCallback|string|number} opts Encoding,\n * max_depth, or callback.\n * @param {commentCallback} [cb] Called on completion.\n * @returns {{options: CommentOptions, cb: commentCallback}} Normalized value.\n * @throws {TypeError} Unknown option type.\n * @private\n */\nfunction normalizeOptions(opts, cb) {\n switch (typeof opts) {\n case 'function':\n return {options: {}, cb: /** @type {commentCallback} */ (opts)}\n case 'string':\n return {options: {encoding: /** @type {BufferEncoding} */ (opts)}, cb}\n case 'number':\n return {options: {max_depth: opts}, cb}\n case 'object':\n return {options: opts || {}, cb}\n default:\n throw new TypeError('Unknown option type')\n }\n}\n\n/**\n * Generate the expanded format of RFC 8949, section 3.2.2.\n *\n * @extends stream.Transform\n */\nclass Commented extends stream.Transform {\n /**\n * Create a CBOR commenter.\n *\n * @param {CommentOptions} [options={}] Stream options.\n */\n constructor(options = {}) {\n const {\n depth = 1,\n max_depth = 10,\n no_summary = false,\n // Decoder options\n tags = {},\n preferWeb,\n encoding,\n // Stream.Transform options\n ...superOpts\n } = options\n\n super({\n ...superOpts,\n readableObjectMode: false,\n writableObjectMode: false,\n })\n\n this.depth = depth\n this.max_depth = max_depth\n this.all = new NoFilter()\n\n if (!tags[24]) {\n tags[24] = this._tag_24.bind(this)\n }\n this.parser = new Decoder({\n tags,\n max_depth,\n preferWeb,\n encoding,\n })\n this.parser.on('value', this._on_value.bind(this))\n this.parser.on('start', this._on_start.bind(this))\n this.parser.on('start-string', this._on_start_string.bind(this))\n this.parser.on('stop', this._on_stop.bind(this))\n this.parser.on('more-bytes', this._on_more.bind(this))\n this.parser.on('error', this._on_error.bind(this))\n if (!no_summary) {\n this.parser.on('data', this._on_data.bind(this))\n }\n this.parser.bs.on('read', this._on_read.bind(this))\n }\n\n /**\n * @param {Buffer} v Descend into embedded CBOR.\n * @private\n */\n _tag_24(v) {\n const c = new Commented({depth: this.depth + 1, no_summary: true})\n\n c.on('data', b => this.push(b))\n c.on('error', er => this.emit('error', er))\n c.end(v)\n }\n\n /**\n * Transforming.\n *\n * @param {any} fresh Buffer to transcode.\n * @param {BufferEncoding} encoding Name of encoding.\n * @param {stream.TransformCallback} cb Callback when done.\n * @ignore\n */\n _transform(fresh, encoding, cb) {\n this.parser.write(fresh, encoding, cb)\n }\n\n /**\n * Flushing.\n *\n * @param {stream.TransformCallback} cb Callback when done.\n * @ignore\n */\n _flush(cb) {\n // TODO: find the test that covers this, and look at the return value\n return this.parser._flush(cb)\n }\n\n /**\n * Comment on an input Buffer or string, creating a string passed to the\n * callback. If callback not specified, a promise is returned.\n *\n * @param {string|Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray\n * |DataView|stream.Readable} input Something to parse.\n * @param {CommentOptions|commentCallback|string|number} [options={}]\n * Encoding, max_depth, or callback.\n * @param {commentCallback} [cb] If specified, called on completion.\n * @returns {Promise} If cb not specified.\n * @throws {Error} Input required.\n * @static\n */\n static comment(input, options = {}, cb = null) {\n if (input == null) {\n throw new Error('input required')\n }\n ({options, cb} = normalizeOptions(options, cb))\n const bs = new NoFilter()\n const {encoding = 'hex', ...opts} = options\n const d = new Commented(opts)\n let p = null\n\n if (typeof cb === 'function') {\n d.on('end', () => {\n cb(null, bs.toString('utf8'))\n })\n d.on('error', cb)\n } else {\n p = new Promise((resolve, reject) => {\n d.on('end', () => {\n resolve(bs.toString('utf8'))\n })\n d.on('error', reject)\n })\n }\n d.pipe(bs)\n utils.guessEncoding(input, encoding).pipe(d)\n return p\n }\n\n /**\n * @ignore\n */\n _on_error(er) {\n this.push('ERROR: ')\n this.push(er.toString())\n this.push('\\n')\n }\n\n /**\n * @ignore\n */\n _on_read(buf) {\n this.all.write(buf)\n const hex = buf.toString('hex')\n\n this.push(new Array(this.depth + 1).join(' '))\n this.push(hex)\n\n let ind = ((this.max_depth - this.depth) * 2) - hex.length\n if (ind < 1) {\n ind = 1\n }\n this.push(new Array(ind + 1).join(' '))\n this.push('-- ')\n }\n\n /**\n * @ignore\n */\n _on_more(mt, len, parent_mt, pos) {\n let desc = ''\n\n this.depth++\n switch (mt) {\n case MT.POS_INT:\n desc = 'Positive number,'\n break\n case MT.NEG_INT:\n desc = 'Negative number,'\n break\n case MT.ARRAY:\n desc = 'Array, length'\n break\n case MT.MAP:\n desc = 'Map, count'\n break\n case MT.BYTE_STRING:\n desc = 'Bytes, length'\n break\n case MT.UTF8_STRING:\n desc = 'String, length'\n break\n case MT.SIMPLE_FLOAT:\n if (len === 1) {\n desc = 'Simple value,'\n } else {\n desc = 'Float,'\n }\n break\n }\n this.push(`${desc} next ${len} byte${plural(len)}\\n`)\n }\n\n /**\n * @ignore\n */\n _on_start_string(mt, len, parent_mt, pos) {\n let desc = ''\n\n this.depth++\n switch (mt) {\n case MT.BYTE_STRING:\n desc = `Bytes, length: ${len}`\n break\n case MT.UTF8_STRING:\n desc = `String, length: ${len.toString()}`\n break\n }\n this.push(`${desc}\\n`)\n }\n\n /**\n * @ignore\n */\n _on_start(mt, tag, parent_mt, pos) {\n this.depth++\n switch (parent_mt) {\n case MT.ARRAY:\n this.push(`[${pos}], `)\n break\n case MT.MAP:\n if (pos % 2) {\n this.push(`{Val:${Math.floor(pos / 2)}}, `)\n } else {\n this.push(`{Key:${Math.floor(pos / 2)}}, `)\n }\n break\n }\n switch (mt) {\n case MT.TAG:\n this.push(`Tag #${tag}`)\n if (tag === 24) {\n this.push(' Encoded CBOR data item')\n }\n break\n case MT.ARRAY:\n if (tag === SYMS.STREAM) {\n this.push('Array (streaming)')\n } else {\n this.push(`Array, ${tag} item${plural(tag)}`)\n }\n break\n case MT.MAP:\n if (tag === SYMS.STREAM) {\n this.push('Map (streaming)')\n } else {\n this.push(`Map, ${tag} pair${plural(tag)}`)\n }\n break\n case MT.BYTE_STRING:\n this.push('Bytes (streaming)')\n break\n case MT.UTF8_STRING:\n this.push('String (streaming)')\n break\n }\n this.push('\\n')\n }\n\n /**\n * @ignore\n */\n _on_stop(mt) {\n this.depth--\n }\n\n /**\n * @private\n */\n _on_value(val, parent_mt, pos, ai) {\n if (val !== SYMS.BREAK) {\n switch (parent_mt) {\n case MT.ARRAY:\n this.push(`[${pos}], `)\n break\n case MT.MAP:\n if (pos % 2) {\n this.push(`{Val:${Math.floor(pos / 2)}}, `)\n } else {\n this.push(`{Key:${Math.floor(pos / 2)}}, `)\n }\n break\n }\n }\n const str = utils.cborValueToString(val, -Infinity)\n\n if ((typeof val === 'string') ||\n (Buffer.isBuffer(val))) {\n if (val.length > 0) {\n this.push(str)\n this.push('\\n')\n }\n this.depth--\n } else {\n this.push(str)\n this.push('\\n')\n }\n\n switch (ai) {\n case NUMBYTES.ONE:\n case NUMBYTES.TWO:\n case NUMBYTES.FOUR:\n case NUMBYTES.EIGHT:\n this.depth--\n }\n }\n\n /**\n * @ignore\n */\n _on_data() {\n this.push('0x')\n this.push(this.all.read().toString('hex'))\n this.push('\\n')\n }\n}\n\nmodule.exports = Commented\n","'use strict'\n\n/**\n * @enum {number}\n */\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7,\n}\n\n/**\n * @enum {number}\n */\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36,\n // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\n SET: 258,\n}\n\n/**\n * @enum {number}\n */\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31,\n}\n\n/**\n * @enum {number}\n */\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23,\n}\n\nexports.SYMS = {\n NULL: Symbol.for('github.com/hildjj/node-cbor/null'),\n UNDEFINED: Symbol.for('github.com/hildjj/node-cbor/undef'),\n PARENT: Symbol.for('github.com/hildjj/node-cbor/parent'),\n BREAK: Symbol.for('github.com/hildjj/node-cbor/break'),\n STREAM: Symbol.for('github.com/hildjj/node-cbor/stream'),\n}\n\nexports.SHIFT32 = 0x100000000\n\nexports.BI = {\n MINUS_ONE: BigInt(-1),\n NEG_MAX: BigInt(-1) - BigInt(Number.MAX_SAFE_INTEGER),\n MAXINT32: BigInt('0xffffffff'),\n MAXINT64: BigInt('0xffffffffffffffff'),\n SHIFT32: BigInt(exports.SHIFT32),\n}\n\n","'use strict'\n\nconst BinaryParseStream = require('../vendor/binary-parse-stream')\nconst Tagged = require('./tagged')\nconst Simple = require('./simple')\nconst utils = require('./utils')\nconst NoFilter = require('nofilter')\nconst stream = require('stream')\nconst constants = require('./constants')\nconst {MT, NUMBYTES, SYMS, BI} = constants\nconst {Buffer} = require('buffer')\n\nconst COUNT = Symbol('count')\nconst MAJOR = Symbol('major type')\nconst ERROR = Symbol('error')\nconst NOT_FOUND = Symbol('not found')\n\nfunction parentArray(parent, typ, count) {\n const a = []\n\n a[COUNT] = count\n a[SYMS.PARENT] = parent\n a[MAJOR] = typ\n return a\n}\n\nfunction parentBufferStream(parent, typ) {\n const b = new NoFilter()\n\n b[COUNT] = -1\n b[SYMS.PARENT] = parent\n b[MAJOR] = typ\n return b\n}\n\nclass UnexpectedDataError extends Error {\n constructor(byte, value) {\n super(`Unexpected data: 0x${byte.toString(16)}`)\n this.name = 'UnexpectedDataError'\n this.byte = byte\n this.value = value\n }\n}\n\n/**\n * Things that can act as inputs, from which a NoFilter can be created.\n *\n * @typedef {string|Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray\n * |DataView|stream.Readable} BufferLike\n */\n/**\n * @typedef ExtendedResults\n * @property {any} value The value that was found.\n * @property {number} length The number of bytes of the original input that\n * were read.\n * @property {Buffer} bytes The bytes of the original input that were used\n * to produce the value.\n * @property {Buffer} [unused] The bytes that were left over from the original\n * input. This property only exists if {@linkcode Decoder.decodeFirst} or\n * {@linkcode Decoder.decodeFirstSync} was called.\n */\n/**\n * @typedef DecoderOptions\n * @property {number} [max_depth=-1] The maximum depth to parse.\n * Use -1 for \"until you run out of memory\". Set this to a finite\n * positive number for un-trusted inputs. Most standard inputs won't nest\n * more than 100 or so levels; I've tested into the millions before\n * running out of memory.\n * @property {Tagged.TagMap} [tags] Mapping from tag number to function(v),\n * where v is the decoded value that comes after the tag, and where the\n * function returns the correctly-created value for that tag.\n * @property {boolean} [preferMap=false] If true, prefer to generate Map\n * instances to plain objects, even if there are no entries in the map\n * or if all of the keys are strings.\n * @property {boolean} [preferWeb=false] If true, prefer Uint8Arrays to\n * be generated instead of node Buffers. This might turn on some more\n * changes in the future, so forward-compatibility is not guaranteed yet.\n * @property {BufferEncoding} [encoding='hex'] The encoding of the input.\n * Ignored if input is a Buffer.\n * @property {boolean} [required=false] Should an error be thrown when no\n * data is in the input?\n * @property {boolean} [extendedResults=false] If true, emit extended\n * results, which will be an object with shape {@link ExtendedResults}.\n * The value will already have been null-checked.\n * @property {boolean} [preventDuplicateKeys=false] If true, error is\n * thrown if a map has duplicate keys.\n */\n/**\n * @callback decodeCallback\n * @param {Error} [error] If one was generated.\n * @param {any} [value] The decoded value.\n * @returns {void}\n */\n/**\n * @param {DecoderOptions|decodeCallback|string} opts Options,\n * the callback, or input incoding.\n * @param {decodeCallback} [cb] Called on completion.\n * @returns {{options: DecoderOptions, cb: decodeCallback}} Normalized.\n * @throws {TypeError} On unknown option type.\n * @private\n */\nfunction normalizeOptions(opts, cb) {\n switch (typeof opts) {\n case 'function':\n return {options: {}, cb: /** @type {decodeCallback} */ (opts)}\n case 'string':\n return {options: {encoding: /** @type {BufferEncoding} */ (opts)}, cb}\n case 'object':\n return {options: opts || {}, cb}\n default:\n throw new TypeError('Unknown option type')\n }\n}\n\n/**\n * Decode a stream of CBOR bytes by transforming them into equivalent\n * JavaScript data. Because of the limitations of Node object streams,\n * special symbols are emitted instead of NULL or UNDEFINED. Fix those\n * up by calling {@link Decoder.nullcheck}.\n *\n * @extends BinaryParseStream\n */\nclass Decoder extends BinaryParseStream {\n /**\n * Create a parsing stream.\n *\n * @param {DecoderOptions} [options={}] Options.\n */\n constructor(options = {}) {\n const {\n tags = {},\n max_depth = -1,\n preferMap = false,\n preferWeb = false,\n required = false,\n encoding = 'hex',\n extendedResults = false,\n preventDuplicateKeys = false,\n ...superOpts\n } = options\n\n super({defaultEncoding: encoding, ...superOpts})\n\n this.running = true\n this.max_depth = max_depth\n this.tags = tags\n this.preferMap = preferMap\n this.preferWeb = preferWeb\n this.extendedResults = extendedResults\n this.required = required\n this.preventDuplicateKeys = preventDuplicateKeys\n\n if (extendedResults) {\n this.bs.on('read', this._onRead.bind(this))\n this.valueBytes = /** @type {NoFilter} */ (new NoFilter())\n }\n }\n\n /**\n * Check the given value for a symbol encoding a NULL or UNDEFINED value in\n * the CBOR stream.\n *\n * @param {any} val The value to check.\n * @returns {any} The corrected value.\n * @throws {Error} Nothing was found.\n * @static\n * @example\n * myDecoder.on('data', val => {\n * val = Decoder.nullcheck(val)\n * // ...\n * })\n */\n static nullcheck(val) {\n switch (val) {\n case SYMS.NULL:\n return null\n case SYMS.UNDEFINED:\n return undefined\n // Leaving this in for now as belt-and-suspenders, but I'm pretty sure\n // it can't happen.\n /* istanbul ignore next */\n case NOT_FOUND:\n /* istanbul ignore next */\n throw new Error('Value not found')\n default:\n return val\n }\n }\n\n /**\n * Decode the first CBOR item in the input, synchronously. This will throw\n * an exception if the input is not valid CBOR, or if there are more bytes\n * left over at the end (if options.extendedResults is not true).\n *\n * @param {BufferLike} input If a Readable stream, must have\n * received the `readable` event already, or you will get an error\n * claiming \"Insufficient data\".\n * @param {DecoderOptions|string} [options={}] Options or encoding for input.\n * @returns {ExtendedResults|any} The decoded value.\n * @throws {UnexpectedDataError} Data is left over after decoding.\n * @throws {Error} Insufficient data.\n * @static\n */\n static decodeFirstSync(input, options = {}) {\n if (input == null) {\n throw new TypeError('input required')\n }\n ({options} = normalizeOptions(options))\n const {encoding = 'hex', ...opts} = options\n const c = new Decoder(opts)\n const s = utils.guessEncoding(input, encoding)\n\n // For/of doesn't work when you need to call next() with a value\n // generator created by parser will be \"done\" after each CBOR entity\n // parser will yield numbers of bytes that it wants\n const parser = c._parse()\n let state = parser.next()\n\n while (!state.done) {\n const b = s.read(state.value)\n\n if ((b == null) || (b.length !== state.value)) {\n throw new Error('Insufficient data')\n }\n if (c.extendedResults) {\n c.valueBytes.write(b)\n }\n state = parser.next(b)\n }\n\n let val = null\n if (c.extendedResults) {\n val = state.value\n val.unused = s.read()\n } else {\n val = Decoder.nullcheck(state.value)\n if (s.length > 0) {\n const nextByte = s.read(1)\n\n s.unshift(nextByte)\n throw new UnexpectedDataError(nextByte[0], val)\n }\n }\n return val\n }\n\n /**\n * Decode all of the CBOR items in the input into an array. This will throw\n * an exception if the input is not valid CBOR; a zero-length input will\n * return an empty array.\n *\n * @param {BufferLike} input What to parse?\n * @param {DecoderOptions|string} [options={}] Options or encoding\n * for input.\n * @returns {Array<ExtendedResults>|Array<any>} Array of all found items.\n * @throws {TypeError} No input provided.\n * @throws {Error} Insufficient data provided.\n * @static\n */\n static decodeAllSync(input, options = {}) {\n if (input == null) {\n throw new TypeError('input required')\n }\n ({options} = normalizeOptions(options))\n const {encoding = 'hex', ...opts} = options\n const c = new Decoder(opts)\n const s = utils.guessEncoding(input, encoding)\n const res = []\n\n while (s.length > 0) {\n const parser = c._parse()\n let state = parser.next()\n\n while (!state.done) {\n const b = s.read(state.value)\n\n if ((b == null) || (b.length !== state.value)) {\n throw new Error('Insufficient data')\n }\n if (c.extendedResults) {\n c.valueBytes.write(b)\n }\n state = parser.next(b)\n }\n res.push(Decoder.nullcheck(state.value))\n }\n return res\n }\n\n /**\n * Decode the first CBOR item in the input. This will error if there are\n * more bytes left over at the end (if options.extendedResults is not true),\n * and optionally if there were no valid CBOR bytes in the input. Emits the\n * {Decoder.NOT_FOUND} Symbol in the callback if no data was found and the\n * `required` option is false.\n *\n * @param {BufferLike} input What to parse?\n * @param {DecoderOptions|decodeCallback|string} [options={}] Options, the\n * callback, or input encoding.\n * @param {decodeCallback} [cb] Callback.\n * @returns {Promise<ExtendedResults|any>} Returned even if callback is\n * specified.\n * @throws {TypeError} No input provided.\n * @static\n */\n static decodeFirst(input, options = {}, cb = null) {\n if (input == null) {\n throw new TypeError('input required')\n }\n ({options, cb} = normalizeOptions(options, cb))\n const {encoding = 'hex', required = false, ...opts} = options\n\n const c = new Decoder(opts)\n let v = /** @type {any} */ (NOT_FOUND)\n const s = utils.guessEncoding(input, encoding)\n const p = new Promise((resolve, reject) => {\n c.on('data', val => {\n v = Decoder.nullcheck(val)\n c.close()\n })\n c.once('error', er => {\n if (c.extendedResults && (er instanceof UnexpectedDataError)) {\n v.unused = c.bs.slice()\n return resolve(v)\n }\n if (v !== NOT_FOUND) {\n // Typescript work-around\n // eslint-disable-next-line dot-notation\n er['value'] = v\n }\n v = ERROR\n c.close()\n return reject(er)\n })\n c.once('end', () => {\n switch (v) {\n case NOT_FOUND:\n if (required) {\n return reject(new Error('No CBOR found'))\n }\n return resolve(v)\n // Pretty sure this can't happen, but not *certain*.\n /* istanbul ignore next */\n case ERROR:\n /* istanbul ignore next */\n return undefined\n default:\n return resolve(v)\n }\n })\n })\n\n if (typeof cb === 'function') {\n p.then(val => cb(null, val), cb)\n }\n s.pipe(c)\n return p\n }\n\n /**\n * @callback decodeAllCallback\n * @param {Error} error If one was generated.\n * @param {Array<ExtendedResults>|Array<any>} value All of the decoded\n * values, wrapped in an Array.\n */\n\n /**\n * Decode all of the CBOR items in the input. This will error if there are\n * more bytes left over at the end.\n *\n * @param {BufferLike} input What to parse?\n * @param {DecoderOptions|decodeAllCallback|string} [options={}]\n * Decoding options, the callback, or the input encoding.\n * @param {decodeAllCallback} [cb] Callback.\n * @returns {Promise<Array<ExtendedResults>|Array<any>>} Even if callback\n * is specified.\n * @throws {TypeError} No input specified.\n * @static\n */\n static decodeAll(input, options = {}, cb = null) {\n if (input == null) {\n throw new TypeError('input required')\n }\n ({options, cb} = normalizeOptions(options, cb))\n const {encoding = 'hex', ...opts} = options\n\n const c = new Decoder(opts)\n const vals = []\n\n c.on('data', val => vals.push(Decoder.nullcheck(val)))\n\n const p = new Promise((resolve, reject) => {\n c.on('error', reject)\n c.on('end', () => resolve(vals))\n })\n\n if (typeof cb === 'function') {\n p.then(v => cb(undefined, v), er => cb(er, undefined))\n }\n utils.guessEncoding(input, encoding).pipe(c)\n return p\n }\n\n /**\n * Stop processing.\n */\n close() {\n this.running = false\n this.__fresh = true\n }\n\n /**\n * Only called if extendedResults is true.\n *\n * @ignore\n */\n _onRead(data) {\n this.valueBytes.write(data)\n }\n\n /**\n * @returns {Generator<number, any, Buffer>} Yields a number of bytes,\n * returns anything, next returns a Buffer.\n * @throws {Error} Maximum depth exceeded.\n * @yields {number} Number of bytes to read.\n * @ignore\n */\n *_parse() {\n let parent = null\n let depth = 0\n let val = null\n\n while (true) {\n if ((this.max_depth >= 0) && (depth > this.max_depth)) {\n throw new Error(`Maximum depth ${this.max_depth} exceeded`)\n }\n\n const [octet] = yield 1\n if (!this.running) {\n this.bs.unshift(Buffer.from([octet]))\n throw new UnexpectedDataError(octet)\n }\n const mt = octet >> 5\n const ai = octet & 0x1f\n const parent_major = (parent == null) ? undefined : parent[MAJOR]\n const parent_length = (parent == null) ? undefined : parent.length\n\n switch (ai) {\n case NUMBYTES.ONE:\n this.emit('more-bytes', mt, 1, parent_major, parent_length)\n ;[val] = yield 1\n break\n case NUMBYTES.TWO:\n case NUMBYTES.FOUR:\n case NUMBYTES.EIGHT: {\n const numbytes = 1 << (ai - 24)\n\n this.emit('more-bytes', mt, numbytes, parent_major, parent_length)\n const buf = yield numbytes\n val = (mt === MT.SIMPLE_FLOAT) ?\n buf :\n utils.parseCBORint(ai, buf)\n break\n }\n case 28:\n case 29:\n case 30:\n this.running = false\n throw new Error(`Additional info not implemented: ${ai}`)\n case NUMBYTES.INDEFINITE:\n switch (mt) {\n case MT.POS_INT:\n case MT.NEG_INT:\n case MT.TAG:\n throw new Error(`Invalid indefinite encoding for MT ${mt}`)\n }\n val = -1\n break\n default:\n val = ai\n }\n switch (mt) {\n case MT.POS_INT:\n // Val already decoded\n break\n case MT.NEG_INT:\n if (val === Number.MAX_SAFE_INTEGER) {\n val = BI.NEG_MAX\n } else {\n val = (typeof val === 'bigint') ? BI.MINUS_ONE - val : -1 - val\n }\n break\n case MT.BYTE_STRING:\n case MT.UTF8_STRING:\n switch (val) {\n case 0:\n this.emit('start-string', mt, val, parent_major, parent_length)\n if (mt === MT.UTF8_STRING) {\n val = ''\n } else {\n val = this.preferWeb ? new Uint8Array(0) : Buffer.allocUnsafe(0)\n }\n break\n case -1:\n this.emit('start', mt, SYMS.STREAM, parent_major, parent_length)\n parent = parentBufferStream(parent, mt)\n depth++\n continue\n default:\n this.emit('start-string', mt, val, parent_major, parent_length)\n val = yield val\n if (mt === MT.UTF8_STRING) {\n val = utils.utf8(val)\n } else if (this.preferWeb) {\n val = new Uint8Array(val.buffer, val.byteOffset, val.length)\n }\n }\n break\n case MT.ARRAY:\n case MT.MAP:\n switch (val) {\n case 0:\n if (mt === MT.MAP) {\n val = (this.preferMap) ? new Map() : {}\n } else {\n val = []\n }\n break\n case -1:\n this.emit('start', mt, SYMS.STREAM, parent_major, parent_length)\n parent = parentArray(parent, mt, -1)\n depth++\n continue\n default:\n this.emit('start', mt, val, parent_major, parent_length)\n parent = parentArray(parent, mt, val * (mt - 3))\n depth++\n continue\n }\n break\n case MT.TAG:\n this.emit('start', mt, val, parent_major, parent_length)\n parent = parentArray(parent, mt, 1)\n parent.push(val)\n depth++\n continue\n case MT.SIMPLE_FLOAT:\n if (typeof val === 'number') {\n if ((ai === NUMBYTES.ONE) && (val < 32)) {\n throw new Error(\n `Invalid two-byte encoding of simple value ${val}`\n )\n }\n const hasParent = (parent != null)\n val = Simple.decode(\n val,\n hasParent,\n hasParent && (parent[COUNT] < 0)\n )\n } else {\n val = utils.parseCBORfloat(val)\n }\n }\n this.emit('value', val, parent_major, parent_length, ai)\n let again = false\n while (parent != null) {\n if (val === SYMS.BREAK) {\n parent[COUNT] = 1\n } else if (Array.isArray(parent)) {\n parent.push(val)\n } else {\n // Assert: parent instanceof NoFilter\n const pm = parent[MAJOR]\n\n if ((pm != null) && (pm !== mt)) {\n this.running = false\n throw new Error('Invalid major type in indefinite encoding')\n }\n parent.write(val)\n }\n\n if ((--parent[COUNT]) !== 0) {\n again = true\n break\n }\n --depth\n delete parent[COUNT]\n\n if (Array.isArray(parent)) {\n switch (parent[MAJOR]) {\n case MT.ARRAY:\n val = parent\n break\n case MT.MAP: {\n let allstrings = !this.preferMap\n\n if ((parent.length % 2) !== 0) {\n throw new Error(`Invalid map length: ${parent.length}`)\n }\n for (\n let i = 0, len = parent.length;\n allstrings && (i < len);\n i += 2\n ) {\n if ((typeof parent[i] !== 'string') ||\n (parent[i] === '__proto__')) {\n allstrings = false\n break\n }\n }\n if (allstrings) {\n val = {}\n for (let i = 0, len = parent.length; i < len; i += 2) {\n if (this.preventDuplicateKeys &&\n Object.prototype.hasOwnProperty.call(val, parent[i])) {\n throw new Error('Duplicate keys in a map')\n }\n val[parent[i]] = parent[i + 1]\n }\n } else {\n val = new Map()\n for (let i = 0, len = parent.length; i < len; i += 2) {\n if (this.preventDuplicateKeys && val.has(parent[i])) {\n throw new Error('Duplicate keys in a map')\n }\n val.set(parent[i], parent[i + 1])\n }\n }\n break\n }\n case MT.TAG: {\n const t = new Tagged(parent[0], parent[1])\n\n val = t.convert(this.tags)\n break\n }\n }\n } else /* istanbul ignore else */ if (parent instanceof NoFilter) {\n // Only parent types are Array and NoFilter for (Array/Map) and\n // (bytes/string) respectively.\n switch (parent[MAJOR]) {\n case MT.BYTE_STRING:\n val = parent.slice()\n if (this.preferWeb) {\n val = new Uint8Array(\n /** @type {Buffer} */ (val).buffer,\n /** @type {Buffer} */ (val).byteOffset,\n /** @type {Buffer} */ (val).length\n )\n }\n break\n case MT.UTF8_STRING:\n val = parent.toString('utf-8')\n break\n }\n }\n this.emit('stop', parent[MAJOR])\n\n const old = parent\n parent = parent[SYMS.PARENT]\n delete old[SYMS.PARENT]\n delete old[MAJOR]\n }\n if (!again) {\n if (this.extendedResults) {\n const bytes = this.valueBytes.slice()\n const ret = {\n value: Decoder.nullcheck(val),\n bytes,\n length: bytes.length,\n }\n\n this.valueBytes = new NoFilter()\n return ret\n }\n return val\n }\n }\n }\n}\n\nDecoder.NOT_FOUND = NOT_FOUND\nmodule.exports = Decoder\n","'use strict'\n\nconst stream = require('stream')\nconst Decoder = require('./decoder')\nconst utils = require('./utils')\nconst NoFilter = require('nofilter')\nconst {MT, SYMS} = require('./constants')\n\n/**\n * Things that can act as inputs, from which a NoFilter can be created.\n *\n * @typedef {string|Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray\n * |DataView|stream.Readable} BufferLike\n */\n\n/**\n * @typedef DiagnoseOptions\n * @property {string} [separator='\\n'] Output between detected objects.\n * @property {boolean} [stream_errors=false] Put error info into the\n * output stream.\n * @property {number} [max_depth=-1] The maximum depth to parse.\n * Use -1 for \"until you run out of memory\". Set this to a finite\n * positive number for un-trusted inputs. Most standard inputs won't nest\n * more than 100 or so levels; I've tested into the millions before\n * running out of memory.\n * @property {object} [tags] Mapping from tag number to function(v),\n * where v is the decoded value that comes after the tag, and where the\n * function returns the correctly-created value for that tag.\n * @property {boolean} [preferWeb=false] If true, prefer Uint8Arrays to\n * be generated instead of node Buffers. This might turn on some more\n * changes in the future, so forward-compatibility is not guaranteed yet.\n * @property {BufferEncoding} [encoding='hex'] The encoding of input, ignored if\n * input is not string.\n */\n/**\n * @callback diagnoseCallback\n * @param {Error} [error] If one was generated.\n * @param {string} [value] The diagnostic value.\n * @returns {void}\n */\n/**\n * @param {DiagnoseOptions|diagnoseCallback|string} opts Options,\n * the callback, or input incoding.\n * @param {diagnoseCallback} [cb] Called on completion.\n * @returns {{options: DiagnoseOptions, cb: diagnoseCallback}} Normalized.\n * @throws {TypeError} Unknown option type.\n * @private\n */\nfunction normalizeOptions(opts, cb) {\n switch (typeof opts) {\n case 'function':\n return {options: {}, cb: /** @type {diagnoseCallback} */ (opts)}\n case 'string':\n return {options: {encoding: /** @type {BufferEncoding} */ (opts)}, cb}\n case 'object':\n return {options: opts || {}, cb}\n default:\n throw new TypeError('Unknown option type')\n }\n}\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n * @extends stream.Transform\n */\nclass Diagnose extends stream.Transform {\n /**\n * Creates an instance of Diagnose.\n *\n * @param {DiagnoseOptions} [options={}] Options for creation.\n */\n constructor(options = {}) {\n const {\n separator = '\\n',\n stream_errors = false,\n // Decoder options\n tags,\n max_depth,\n preferWeb,\n encoding,\n // Stream.Transform options\n ...superOpts\n } = options\n super({\n ...superOpts,\n readableObjectMode: false,\n writableObjectMode: false,\n })\n\n this.float_bytes = -1\n this.separator = separator\n this.stream_errors = stream_errors\n this.parser = new Decoder({\n tags,\n max_depth,\n preferWeb,\n encoding,\n })\n this.parser.on('more-bytes', this._on_more.bind(this))\n this.parser.on('value', this._on_value.bind(this))\n this.parser.on('start', this._on_start.bind(this))\n this.parser.on('stop', this._on_stop.bind(this))\n this.parser.on('data', this._on_data.bind(this))\n this.parser.on('error', this._on_error.bind(this))\n }\n\n /**\n * Transforming.\n *\n * @param {any} fresh Buffer to transcode.\n * @param {BufferEncoding} encoding Name of encoding.\n * @param {stream.TransformCallback} cb Callback when done.\n * @ignore\n */\n _transform(fresh, encoding, cb) {\n this.parser.write(fresh, encoding, cb)\n }\n\n /**\n * Flushing.\n *\n * @param {stream.TransformCallback} cb Callback when done.\n * @ignore\n */\n _flush(cb) {\n this.parser._flush(er => {\n if (this.stream_errors) {\n if (er) {\n this._on_error(er)\n }\n return cb()\n }\n return cb(er)\n })\n }\n\n /**\n * Convenience function to return a string in diagnostic format.\n *\n * @param {BufferLike} input The CBOR bytes to format.\n * @param {DiagnoseOptions |diagnoseCallback|string} [options={}]\n * Options, the callback, or the input encoding.\n * @param {diagnoseCallback} [cb] Callback.\n * @returns {Promise} If callback not specified.\n * @throws {TypeError} Input not provided.\n */\n static diagnose(input, options = {}, cb = null) {\n if (input == null) {\n throw new TypeError('input required')\n }\n ({options, cb} = normalizeOptions(options, cb))\n const {encoding = 'hex', ...opts} = options\n\n const bs = new NoFilter()\n const d = new Diagnose(opts)\n let p = null\n if (typeof cb === 'function') {\n d.on('end', () => cb(null, bs.toString('utf8')))\n d.on('error', cb)\n } else {\n p = new Promise((resolve, reject) => {\n d.on('end', () => resolve(bs.toString('utf8')))\n d.on('error', reject)\n })\n }\n d.pipe(bs)\n utils.guessEncoding(input, encoding).pipe(d)\n return p\n }\n\n /**\n * @ignore\n */\n _on_error(er) {\n if (this.stream_errors) {\n this.push(er.toString())\n } else {\n this.emit('error', er)\n }\n }\n\n /** @private */\n _on_more(mt, len, parent_mt, pos) {\n if (mt === MT.SIMPLE_FLOAT) {\n this.float_bytes = {\n 2: 1,\n 4: 2,\n 8: 3,\n }[len]\n }\n }\n\n /** @private */\n _fore(parent_mt, pos) {\n switch (parent_mt) {\n case MT.BYTE_STRING:\n case MT.UTF8_STRING:\n case MT.ARRAY:\n if (pos > 0) {\n this.push(', ')\n }\n break\n case MT.MAP:\n if (pos > 0) {\n if (pos % 2) {\n this.push(': ')\n } else {\n this.push(', ')\n }\n }\n }\n }\n\n /** @private */\n _on_value(val, parent_mt, pos) {\n if (val === SYMS.BREAK) {\n return\n }\n this._fore(parent_mt, pos)\n const fb = this.float_bytes\n this.float_bytes = -1\n this.push(utils.cborValueToString(val, fb))\n }\n\n /** @private */\n _on_start(mt, tag, parent_mt, pos) {\n this._fore(parent_mt, pos)\n switch (mt) {\n case MT.TAG:\n this.push(`${tag}(`)\n break\n case MT.ARRAY:\n this.push('[')\n break\n case MT.MAP:\n this.push('{')\n break\n case MT.BYTE_STRING:\n case MT.UTF8_STRING:\n this.push('(')\n break\n }\n if (tag === SYMS.STREAM) {\n this.push('_ ')\n }\n }\n\n /** @private */\n _on_stop(mt) {\n switch (mt) {\n case MT.TAG:\n this.push(')')\n break\n case MT.ARRAY:\n this.push(']')\n break\n case MT.MAP:\n this.push('}')\n break\n case MT.BYTE_STRING:\n case MT.UTF8_STRING:\n this.push(')')\n break\n }\n }\n\n /** @private */\n _on_data() {\n this.push(this.separator)\n }\n}\n\nmodule.exports = Diagnose\n","'use strict'\n\nconst stream = require('stream')\nconst NoFilter = require('nofilter')\nconst utils = require('./utils')\nconst constants = require('./constants')\nconst {\n MT, NUMBYTES, SHIFT32, SIMPLE, SYMS, TAG, BI,\n} = constants\nconst {Buffer} = require('buffer')\n\nconst HALF = (MT.SIMPLE_FLOAT << 5) | NUMBYTES.TWO\nconst FLOAT = (MT.SIMPLE_FLOAT << 5) | NUMBYTES.FOUR\nconst DOUBLE = (MT.SIMPLE_FLOAT << 5) | NUMBYTES.EIGHT\nconst TRUE = (MT.SIMPLE_FLOAT << 5) | SIMPLE.TRUE\nconst FALSE = (MT.SIMPLE_FLOAT << 5) | SIMPLE.FALSE\nconst UNDEFINED = (MT.SIMPLE_FLOAT << 5) | SIMPLE.UNDEFINED\nconst NULL = (MT.SIMPLE_FLOAT << 5) | SIMPLE.NULL\n\nconst BREAK = Buffer.from([0xff])\nconst BUF_NAN = Buffer.from('f97e00', 'hex')\nconst BUF_INF_NEG = Buffer.from('f9fc00', 'hex')\nconst BUF_INF_POS = Buffer.from('f97c00', 'hex')\nconst BUF_NEG_ZERO = Buffer.from('f98000', 'hex')\n\n/**\n * Generate the CBOR for a value. If you are using this, you'll either need\n * to call {@link Encoder.write} with a Buffer, or look into the internals of\n * Encoder to reuse existing non-documented behavior.\n *\n * @callback EncodeFunction\n * @param {Encoder} enc The encoder to use.\n * @param {any} val The value to encode.\n * @returns {boolean} True on success.\n */\n\n/* eslint-disable jsdoc/check-types */\n/**\n * A mapping from tag number to a tag decoding function.\n *\n * @typedef {Object.<string, EncodeFunction>} SemanticMap\n */\n/* eslint-enable jsdoc/check-types */\n\n/**\n * @type {SemanticMap}\n * @private\n */\nconst SEMANTIC_TYPES = {}\n\n/**\n * @type {SemanticMap}\n * @private\n */\nlet current_SEMANTIC_TYPES = {}\n\n/**\n * @param {string} str String to normalize.\n * @returns {\"number\"|\"float\"|\"int\"|\"string\"} Normalized.\n * @throws {TypeError} Invalid input.\n * @private\n */\nfunction parseDateType(str) {\n if (!str) {\n return 'number'\n }\n switch (str.toLowerCase()) {\n case 'number':\n return 'number'\n case 'float':\n return 'float'\n case 'int':\n case 'integer':\n return 'int'\n case 'string':\n return 'string'\n }\n throw new TypeError(`dateType invalid, got \"${str}\"`)\n}\n\n/**\n * @typedef ObjectOptions\n * @property {boolean} [indefinite = false] Force indefinite encoding for this\n * object.\n * @property {boolean} [skipTypes = false] Do not use available type mappings\n * for this object, but encode it as a \"normal\" JS object would be.\n */\n\n/**\n * @typedef EncodingOptions\n * @property {any[]|object} [genTypes=[]] Array of pairs of\n * `type`, `function(Encoder)` for semantic types to be encoded. Not\n * needed for Array, Date, Buffer, Map, RegExp, Set, or URL.\n * If an object, the keys are the constructor names for the types.\n * @property {boolean} [canonical=false] Should the output be\n * canonicalized.\n * @property {boolean|WeakSet} [detectLoops=false] Should object loops\n * be detected? This will currently add memory to track every part of the\n * object being encoded in a WeakSet. Do not encode\n * the same object twice on the same encoder, without calling\n * `removeLoopDetectors` in between, which will clear the WeakSet.\n * You may pass in your own WeakSet to be used; this is useful in some\n * recursive scenarios.\n * @property {(\"number\"|\"float\"|\"int\"|\"string\")} [dateType=\"number\"] -\n * how should dates be encoded? \"number\" means float or int, if no\n * fractional seconds.\n * @property {any} [encodeUndefined=undefined] How should an\n * \"undefined\" in the input be encoded. By default, just encode a CBOR\n * undefined. If this is a buffer, use those bytes without re-encoding\n * them. If this is a function, the function will be called (which is a\n * good time to throw an exception, if that's what you want), and the\n * return value will be used according to these rules. Anything else will\n * be encoded as CBOR.\n * @property {boolean} [disallowUndefinedKeys=false] Should\n * \"undefined\" be disallowed as a key in a Map that is serialized? If\n * this is true, encode(new Map([[undefined, 1]])) will throw an\n * exception. Note that it is impossible to get a key of undefined in a\n * normal JS object.\n * @property {boolean} [collapseBigIntegers=false] Should integers\n * that come in as ECMAscript bigint's be encoded\n * as normal CBOR integers if they fit, discarding type information?\n * @property {number} [chunkSize=4096] Number of characters or bytes\n * for each chunk, if obj is a string or Buffer, when indefinite encoding.\n * @property {boolean} [omitUndefinedProperties=false] When encoding\n * objects or Maps, do not include a key if its corresponding value is\n * `undefined`.\n */\n\n/**\n * Transform JavaScript values into CBOR bytes. The `Writable` side of\n * the stream is in object mode.\n *\n * @extends stream.Transform\n */\nclass Encoder extends stream.Transform {\n /**\n * Creates an instance of Encoder.\n *\n * @param {EncodingOptions} [options={}] Options for the encoder.\n */\n constructor(options = {}) {\n const {\n canonical = false,\n encodeUndefined,\n disallowUndefinedKeys = false,\n dateType = 'number',\n collapseBigIntegers = false,\n detectLoops = false,\n omitUndefinedProperties = false,\n genTypes = [],\n ...superOpts\n } = options\n\n super({\n ...superOpts,\n readableObjectMode: false,\n writableObjectMode: true,\n })\n\n this.canonical = canonical\n this.encodeUndefined = encodeUndefined\n this.disallowUndefinedKeys = disallowUndefinedKeys\n this.dateType = parseDateType(dateType)\n this.collapseBigIntegers = this.canonical ? true : collapseBigIntegers\n\n /** @type {WeakSet?} */\n this.detectLoops = undefined\n if (typeof detectLoops === 'boolean') {\n if (detectLoops) {\n this.detectLoops = new WeakSet()\n }\n } else if (detectLoops instanceof WeakSet) {\n this.detectLoops = detectLoops\n } else {\n throw new TypeError('detectLoops must be boolean or WeakSet')\n }\n this.omitUndefinedProperties = omitUndefinedProperties\n\n this.semanticTypes = {...Encoder.SEMANTIC_TYPES}\n\n if (Array.isArray(genTypes)) {\n for (let i = 0, len = genTypes.length; i < len; i += 2) {\n this.addSemanticType(genTypes[i], genTypes[i + 1])\n }\n } else {\n for (const [k, v] of Object.entries(genTypes)) {\n this.addSemanticType(k, v)\n }\n }\n }\n\n /**\n * Transforming.\n *\n * @param {any} fresh Buffer to transcode.\n * @param {BufferEncoding} encoding Name of encoding.\n * @param {stream.TransformCallback} cb Callback when done.\n * @ignore\n */\n _transform(fresh, encoding, cb) {\n const ret = this.pushAny(fresh)\n // Old transformers might not return bool. undefined !== false\n cb((ret === false) ? new Error('Push Error') : undefined)\n }\n\n /**\n * Flushing.\n *\n * @param {stream.TransformCallback} cb Callback when done.\n * @ignore\n */\n // eslint-disable-next-line class-methods-use-this\n _flush(cb) {\n cb()\n }\n\n /**\n * @param {number} val Number(0-255) to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushUInt8(val) {\n const b = Buffer.allocUnsafe(1)\n b.writeUInt8(val, 0)\n return this.push(b)\n }\n\n /**\n * @param {number} val Number(0-65535) to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushUInt16BE(val) {\n const b = Buffer.allocUnsafe(2)\n b.writeUInt16BE(val, 0)\n return this.push(b)\n }\n\n /**\n * @param {number} val Number(0..2**32-1) to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushUInt32BE(val) {\n const b = Buffer.allocUnsafe(4)\n b.writeUInt32BE(val, 0)\n return this.push(b)\n }\n\n /**\n * @param {number} val Number to encode as 4-byte float.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushFloatBE(val) {\n const b = Buffer.allocUnsafe(4)\n b.writeFloatBE(val, 0)\n return this.push(b)\n }\n\n /**\n * @param {number} val Number to encode as 8-byte double.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushDoubleBE(val) {\n const b = Buffer.allocUnsafe(8)\n b.writeDoubleBE(val, 0)\n return this.push(b)\n }\n\n /**\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushNaN() {\n return this.push(BUF_NAN)\n }\n\n /**\n * @param {number} obj Positive or negative infinity.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushInfinity(obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n /**\n * Choose the best float representation for a number and encode it.\n *\n * @param {number} obj A number that is known to be not-integer, but not\n * how many bytes of precision it needs.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushFloat(obj) {\n if (this.canonical) {\n // TODO: is this enough slower to hide behind canonical?\n // It's certainly enough of a hack (see utils.parseHalf)\n\n // From section 3.9:\n // If a protocol allows for IEEE floats, then additional canonicalization\n // rules might need to be added. One example rule might be to have all\n // floats start as a 64-bit float, then do a test conversion to a 32-bit\n // float; if the result is the same numeric value, use the shorter value\n // and repeat the process with a test conversion to a 16-bit float. (This\n // rule selects 16-bit float for positive and negative Infinity as well.)\n\n // which seems pretty much backwards to me.\n const b2 = Buffer.allocUnsafe(2)\n if (utils.writeHalf(b2, obj)) {\n // I have convinced myself that there are no cases where writeHalf\n // will return true but `utils.parseHalf(b2) !== obj)`\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n if (Math.fround(obj) === obj) {\n return this._pushUInt8(FLOAT) && this._pushFloatBE(obj)\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n /**\n * Choose the best integer representation for a postive number and encode\n * it. If the number is over MAX_SAFE_INTEGER, fall back on float (but I\n * don't remember why).\n *\n * @param {number} obj A positive number that is known to be an integer,\n * but not how many bytes of precision it needs.\n * @param {number} mt The Major Type number to combine with the integer.\n * Not yet shifted.\n * @param {number} [orig] The number before it was transformed to positive.\n * If the mt is NEG_INT, and the positive number is over MAX_SAFE_INT,\n * then we'll encode this as a float rather than making the number\n * negative again and losing precision.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushInt(obj, mt, orig) {\n const m = mt << 5\n\n if (obj < 24) {\n return this._pushUInt8(m | obj)\n }\n if (obj <= 0xff) {\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n }\n if (obj <= 0xffff) {\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n }\n if (obj <= 0xffffffff) {\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n }\n let max = Number.MAX_SAFE_INTEGER\n if (mt === MT.NEG_INT) {\n // Special case for Number.MIN_SAFE_INTEGER - 1\n max--\n }\n if (obj <= max) {\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n }\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n }\n return this._pushFloat(obj)\n }\n\n /**\n * Choose the best integer representation for a number and encode it.\n *\n * @param {number} obj A number that is known to be an integer,\n * but not how many bytes of precision it needs.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushIntNum(obj) {\n if (Object.is(obj, -0)) {\n return this.push(BUF_NEG_ZERO)\n }\n\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n }\n return this._pushInt(obj, MT.POS_INT)\n }\n\n /**\n * @param {number} obj Plain JS number to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushNumber(obj) {\n if (isNaN(obj)) {\n return this._pushNaN()\n }\n if (!isFinite(obj)) {\n return this._pushInfinity(obj)\n }\n if (Math.round(obj) === obj) {\n return this._pushIntNum(obj)\n }\n return this._pushFloat(obj)\n }\n\n /**\n * @param {string} obj String to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushString(obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.push(obj, 'utf8')\n }\n\n /**\n * @param {boolean} obj Bool to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushBoolean(obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n /**\n * @param {undefined} obj Ignored.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushUndefined(obj) {\n switch (typeof this.encodeUndefined) {\n case 'undefined':\n return this._pushUInt8(UNDEFINED)\n case 'function':\n return this.pushAny(this.encodeUndefined(obj))\n case 'object': {\n const buf = utils.bufferishToBuffer(this.encodeUndefined)\n if (buf) {\n return this.push(buf)\n }\n }\n }\n return this.pushAny(this.encodeUndefined)\n }\n\n /**\n * @param {null} obj Ignored.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushNull(obj) {\n return this._pushUInt8(NULL)\n }\n\n /**\n * @param {number} tag Tag number to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushTag(tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n /**\n * @param {bigint} obj BigInt to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n _pushJSBigint(obj) {\n let m = MT.POS_INT\n let tag = TAG.POS_BIGINT\n // BigInt doesn't have -0\n if (obj < 0) {\n obj = -obj + BI.MINUS_ONE\n m = MT.NEG_INT\n tag = TAG.NEG_BIGINT\n }\n\n if (this.collapseBigIntegers &&\n (obj <= BI.MAXINT64)) {\n // Special handiling for 64bits\n if (obj <= 0xffffffff) {\n return this._pushInt(Number(obj), m)\n }\n return this._pushUInt8((m << 5) | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Number(obj / BI.SHIFT32)) &&\n this._pushUInt32BE(Number(obj % BI.SHIFT32))\n }\n\n let str = obj.toString(16)\n if (str.length % 2) {\n str = `0${str}`\n }\n const buf = Buffer.from(str, 'hex')\n return this._pushTag(tag) && Encoder._pushBuffer(this, buf)\n }\n\n /**\n * @param {object} obj Object to encode.\n * @param {ObjectOptions} [opts] Options for encoding this object.\n * @returns {boolean} True on success.\n * @throws {Error} Loop detected.\n * @ignore\n */\n _pushObject(obj, opts) {\n if (!obj) {\n return this._pushNull(obj)\n }\n opts = {\n indefinite: false,\n skipTypes: false,\n ...opts,\n }\n if (!opts.indefinite) {\n // This will only happen the first time through for indefinite encoding\n if (this.detectLoops) {\n if (this.detectLoops.has(obj)) {\n throw new Error(`\\\nLoop detected while CBOR encoding.\nCall removeLoopDetectors before resuming.`)\n } else {\n this.detectLoops.add(obj)\n }\n }\n }\n if (!opts.skipTypes) {\n const f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n const converter = this.semanticTypes[obj.constructor.name]\n if (converter) {\n return converter.call(obj, this, obj)\n }\n }\n const keys = Object.keys(obj).filter(k => {\n const tv = typeof obj[k]\n return (tv !== 'function') &&\n (!this.omitUndefinedProperties || (tv !== 'undefined'))\n })\n const cbor_keys = {}\n if (this.canonical) {\n // Note: this can't be a normal sort, because 'b' needs to sort before\n // 'aa'\n keys.sort((a, b) => {\n // Always strings, so don't bother to pass options.\n // hold on to the cbor versions, since there's no need\n // to encode more than once\n const a_cbor = cbor_keys[a] || (cbor_keys[a] = Encoder.encode(a))\n const b_cbor = cbor_keys[b] || (cbor_keys[b] = Encoder.encode(b))\n\n return a_cbor.compare(b_cbor)\n })\n }\n if (opts.indefinite) {\n if (!this._pushUInt8((MT.MAP << 5) | NUMBYTES.INDEFINITE)) {\n return false\n }\n } else if (!this._pushInt(keys.length, MT.MAP)) {\n return false\n }\n let ck = null\n for (let j = 0, len2 = keys.length; j < len2; j++) {\n const k = keys[j]\n if (this.canonical && ((ck = cbor_keys[k]))) {\n if (!this.push(ck)) { // Already a Buffer\n return false\n }\n } else if (!this._pushString(k)) {\n return false\n }\n if (!this.pushAny(obj[k])) {\n return false\n }\n }\n if (opts.indefinite) {\n if (!this.push(BREAK)) {\n return false\n }\n } else if (this.detectLoops) {\n this.detectLoops.delete(obj)\n }\n return true\n }\n\n /**\n * @param {any[]} objs Array of supported things.\n * @returns {Buffer} Concatenation of encodings for the supported things.\n * @ignore\n */\n _encodeAll(objs) {\n const bs = new NoFilter({highWaterMark: this.readableHighWaterMark})\n this.pipe(bs)\n for (const o of objs) {\n this.pushAny(o)\n }\n this.end()\n return bs.read()\n }\n\n /**\n * Add an encoding function to the list of supported semantic types. This\n * is useful for objects for which you can't add an encodeCBOR method.\n *\n * @param {string|Function} type The type to encode.\n * @param {EncodeFunction} fun The encoder to use.\n * @returns {EncodeFunction?} The previous encoder or undefined if there\n * wasn't one.\n * @throws {TypeError} Invalid function.\n */\n addSemanticType(type, fun) {\n const typeName = (typeof type === 'string') ? type : type.name\n const old = this.semanticTypes[typeName]\n\n if (fun) {\n if (typeof fun !== 'function') {\n throw new TypeError('fun must be of type function')\n }\n this.semanticTypes[typeName] = fun\n } else if (old) {\n delete this.semanticTypes[typeName]\n }\n return old\n }\n\n /**\n * Push any supported type onto the encoded stream.\n *\n * @param {any} obj The thing to encode.\n * @returns {boolean} True on success.\n * @throws {TypeError} Unknown type for obj.\n */\n pushAny(obj) {\n switch (typeof obj) {\n case 'number':\n return this._pushNumber(obj)\n case 'bigint':\n return this._pushJSBigint(obj)\n case 'string':\n return this._pushString(obj)\n case 'boolean':\n return this._pushBoolean(obj)\n case 'undefined':\n return this._pushUndefined(obj)\n case 'object':\n return this._pushObject(obj)\n case 'symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushNull(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(undefined)\n // TODO: Add pluggable support for other symbols\n default:\n throw new TypeError(`Unknown symbol: ${obj.toString()}`)\n }\n default:\n throw new TypeError(\n `Unknown type: ${typeof obj}, ${(typeof obj.toString === 'function') ? obj.toString() : ''}`\n )\n }\n }\n\n /**\n * Encode an array and all of its elements.\n *\n * @param {Encoder} gen Encoder to use.\n * @param {any[]} obj Array to encode.\n * @param {object} [opts] Options.\n * @param {boolean} [opts.indefinite=false] Use indefinite encoding?\n * @returns {boolean} True on success.\n */\n static pushArray(gen, obj, opts) {\n opts = {\n indefinite: false,\n ...opts,\n }\n const len = obj.length\n if (opts.indefinite) {\n if (!gen._pushUInt8((MT.ARRAY << 5) | NUMBYTES.INDEFINITE)) {\n return false\n }\n } else if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n if (opts.indefinite) {\n if (!gen.push(BREAK)) {\n return false\n }\n }\n return true\n }\n\n /**\n * Remove the loop detector WeakSet for this Encoder.\n *\n * @returns {boolean} True when the Encoder was reset, else false.\n */\n removeLoopDetectors() {\n if (!this.detectLoops) {\n return false\n }\n this.detectLoops = new WeakSet()\n return true\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param {Date} obj Date to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n static _pushDate(gen, obj) {\n switch (gen.dateType) {\n case 'string':\n return gen._pushTag(TAG.DATE_STRING) &&\n gen._pushString(obj.toISOString())\n case 'int':\n return gen._pushTag(TAG.DATE_EPOCH) &&\n gen._pushIntNum(Math.round(obj.getTime() / 1000))\n case 'float':\n // Force float\n return gen._pushTag(TAG.DATE_EPOCH) &&\n gen._pushFloat(obj.getTime() / 1000)\n case 'number':\n default:\n // If we happen to have an integral number of seconds,\n // use integer. Otherwise, use float.\n return gen._pushTag(TAG.DATE_EPOCH) &&\n gen.pushAny(obj.getTime() / 1000)\n }\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param {Buffer} obj Buffer to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n static _pushBuffer(gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param {NoFilter} obj Buffer to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n static _pushNoFilter(gen, obj) {\n return Encoder._pushBuffer(gen, /** @type {Buffer} */ (obj.slice()))\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param {RegExp} obj RegExp to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n static _pushRegexp(gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param {Set} obj Set to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n static _pushSet(gen, obj) {\n if (!gen._pushTag(TAG.SET)) {\n return false\n }\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (const x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param {URL} obj URL to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n static _pushURL(gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.toString())\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param {object} obj Boxed String, Number, or Boolean object to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n static _pushBoxed(gen, obj) {\n return gen.pushAny(obj.valueOf())\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param {Map} obj Map to encode.\n * @returns {boolean} True on success.\n * @throws {Error} Map key that is undefined.\n * @ignore\n */\n static _pushMap(gen, obj, opts) {\n opts = {\n indefinite: false,\n ...opts,\n }\n let entries = [...obj.entries()]\n if (gen.omitUndefinedProperties) {\n entries = entries.filter(([k, v]) => v !== undefined)\n }\n if (opts.indefinite) {\n if (!gen._pushUInt8((MT.MAP << 5) | NUMBYTES.INDEFINITE)) {\n return false\n }\n } else if (!gen._pushInt(entries.length, MT.MAP)) {\n return false\n }\n // Memoizing the cbor only helps in certain cases, and hurts in most\n // others. Just avoid it.\n if (gen.canonical) {\n // Keep the key/value pairs together, so we don't have to do odd\n // gets with object keys later\n const enc = new Encoder({\n genTypes: gen.semanticTypes,\n canonical: gen.canonical,\n detectLoops: Boolean(gen.detectLoops), // Give enc its own loop detector\n dateType: gen.dateType,\n disallowUndefinedKeys: gen.disallowUndefinedKeys,\n collapseBigIntegers: gen.collapseBigIntegers,\n })\n const bs = new NoFilter({highWaterMark: gen.readableHighWaterMark})\n enc.pipe(bs)\n entries.sort(([a], [b]) => {\n // Both a and b are the keys\n enc.pushAny(a)\n const a_cbor = bs.read()\n enc.pushAny(b)\n const b_cbor = bs.read()\n return a_cbor.compare(b_cbor)\n })\n for (const [k, v] of entries) {\n if (gen.disallowUndefinedKeys && (typeof k === 'undefined')) {\n throw new Error('Invalid Map key: undefined')\n }\n if (!(gen.pushAny(k) && gen.pushAny(v))) {\n return false\n }\n }\n } else {\n for (const [k, v] of entries) {\n if (gen.disallowUndefinedKeys && (typeof k === 'undefined')) {\n throw new Error('Invalid Map key: undefined')\n }\n if (!(gen.pushAny(k) && gen.pushAny(v))) {\n return false\n }\n }\n }\n if (opts.indefinite) {\n if (!gen.push(BREAK)) {\n return false\n }\n }\n return true\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param {NodeJS.TypedArray} obj Array to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n static _pushTypedArray(gen, obj) {\n // See https://tools.ietf.org/html/rfc8746\n\n let typ = 0b01000000\n let sz = obj.BYTES_PER_ELEMENT\n const {name} = obj.constructor\n\n if (name.startsWith('Float')) {\n typ |= 0b00010000\n sz /= 2\n } else if (!name.includes('U')) {\n typ |= 0b00001000\n }\n if (name.includes('Clamped') || ((sz !== 1) && !utils.isBigEndian())) {\n typ |= 0b00000100\n }\n typ |= {\n 1: 0b00,\n 2: 0b01,\n 4: 0b10,\n 8: 0b11,\n }[sz]\n if (!gen._pushTag(typ)) {\n return false\n }\n return Encoder._pushBuffer(\n gen,\n Buffer.from(obj.buffer, obj.byteOffset, obj.byteLength)\n )\n }\n\n /**\n * @param {Encoder} gen Encoder.\n * @param { ArrayBuffer } obj Array to encode.\n * @returns {boolean} True on success.\n * @ignore\n */\n static _pushArrayBuffer(gen, obj) {\n return Encoder._pushBuffer(gen, Buffer.from(obj))\n }\n\n /**\n * Encode the given object with indefinite length. There are apparently\n * some (IMO) broken implementations of poorly-specified protocols that\n * REQUIRE indefinite-encoding. See the example for how to add this as an\n * `encodeCBOR` function to an object or class to get indefinite encoding.\n *\n * @param {Encoder} gen The encoder to use.\n * @param {string|Buffer|Array|Map|object} [obj] The object to encode. If\n * null, use \"this\" instead.\n * @param {EncodingOptions} [options={}] Options for encoding.\n * @returns {boolean} True on success.\n * @throws {Error} No object to encode or invalid indefinite encoding.\n * @example <caption>Force indefinite encoding:</caption>\n * const o = {\n * a: true,\n * encodeCBOR: cbor.Encoder.encodeIndefinite,\n * }\n * const m = []\n * m.encodeCBOR = cbor.Encoder.encodeIndefinite\n * cbor.encodeOne([o, m])\n */\n static encodeIndefinite(gen, obj, options = {}) {\n if (obj == null) {\n if (this == null) {\n throw new Error('No object to encode')\n }\n obj = this\n }\n\n // TODO: consider other options\n const {chunkSize = 4096} = options\n\n let ret = true\n const objType = typeof obj\n let buf = null\n if (objType === 'string') {\n // TODO: make sure not to split surrogate pairs at the edges of chunks,\n // since such half-surrogates cannot be legally encoded as UTF-8.\n ret = ret && gen._pushUInt8((MT.UTF8_STRING << 5) | NUMBYTES.INDEFINITE)\n let offset = 0\n while (offset < obj.length) {\n const endIndex = offset + chunkSize\n ret = ret && gen._pushString(obj.slice(offset, endIndex))\n offset = endIndex\n }\n ret = ret && gen.push(BREAK)\n } else if ((buf = utils.bufferishToBuffer(obj))) {\n ret = ret && gen._pushUInt8((MT.BYTE_STRING << 5) | NUMBYTES.INDEFINITE)\n let offset = 0\n while (offset < buf.length) {\n const endIndex = offset + chunkSize\n ret = ret && Encoder._pushBuffer(gen, buf.slice(offset, endIndex))\n offset = endIndex\n }\n ret = ret && gen.push(BREAK)\n } else if (Array.isArray(obj)) {\n ret = ret && Encoder.pushArray(gen, obj, {\n indefinite: true,\n })\n } else if (obj instanceof Map) {\n ret = ret && Encoder._pushMap(gen, obj, {\n indefinite: true,\n })\n } else {\n if (objType !== 'object') {\n throw new Error('Invalid indefinite encoding')\n }\n ret = ret && gen._pushObject(obj, {\n indefinite: true,\n skipTypes: true,\n })\n }\n return ret\n }\n\n /**\n * Encode one or more JavaScript objects, and return a Buffer containing the\n * CBOR bytes.\n *\n * @param {...any} objs The objects to encode.\n * @returns {Buffer} The encoded objects.\n */\n static encode(...objs) {\n return new Encoder()._encodeAll(objs)\n }\n\n /**\n * Encode one or more JavaScript objects canonically (slower!), and return\n * a Buffer containing the CBOR bytes.\n *\n * @param {...any} objs The objects to encode.\n * @returns {Buffer} The encoded objects.\n */\n static encodeCanonical(...objs) {\n return new Encoder({\n canonical: true,\n })._encodeAll(objs)\n }\n\n /**\n * Encode one JavaScript object using the given options.\n *\n * @param {any} obj The object to encode.\n * @param {EncodingOptions} [options={}] Passed to the Encoder constructor.\n * @returns {Buffer} The encoded objects.\n * @static\n */\n static encodeOne(obj, options) {\n return new Encoder(options)._encodeAll([obj])\n }\n\n /**\n * Encode one JavaScript object using the given options in a way that\n * is more resilient to objects being larger than the highWaterMark\n * number of bytes. As with the other static encode functions, this\n * will still use a large amount of memory. Use a stream-based approach\n * directly if you need to process large and complicated inputs.\n *\n * @param {any} obj The object to encode.\n * @param {EncodingOptions} [options={}] Passed to the Encoder constructor.\n * @returns {Promise<Buffer>} A promise for the encoded buffer.\n */\n static encodeAsync(obj, options) {\n return new Promise((resolve, reject) => {\n const bufs = []\n const enc = new Encoder(options)\n enc.on('data', buf => bufs.push(buf))\n enc.on('error', reject)\n enc.on('finish', () => resolve(Buffer.concat(bufs)))\n enc.pushAny(obj)\n enc.end()\n })\n }\n\n /**\n * The currently supported set of semantic types. May be modified by plugins.\n *\n * @type {SemanticMap}\n */\n static get SEMANTIC_TYPES() {\n return current_SEMANTIC_TYPES\n }\n\n static set SEMANTIC_TYPES(val) {\n current_SEMANTIC_TYPES = val\n }\n\n /**\n * Reset the supported semantic types to the original set, before any\n * plugins modified the list.\n */\n static reset() {\n Encoder.SEMANTIC_TYPES = {...SEMANTIC_TYPES}\n }\n}\n\nObject.assign(SEMANTIC_TYPES, {\n Array: Encoder.pushArray,\n Date: Encoder._pushDate,\n Buffer: Encoder._pushBuffer,\n [Buffer.name]: Encoder._pushBuffer, // Might be mangled\n Map: Encoder._pushMap,\n NoFilter: Encoder._pushNoFilter,\n [NoFilter.name]: Encoder._pushNoFilter, // Mßight be mangled\n RegExp: Encoder._pushRegexp,\n Set: Encoder._pushSet,\n ArrayBuffer: Encoder._pushArrayBuffer,\n Uint8ClampedArray: Encoder._pushTypedArray,\n Uint8Array: Encoder._pushTypedArray,\n Uint16Array: Encoder._pushTypedArray,\n Uint32Array: Encoder._pushTypedArray,\n Int8Array: Encoder._pushTypedArray,\n Int16Array: Encoder._pushTypedArray,\n Int32Array: Encoder._pushTypedArray,\n Float32Array: Encoder._pushTypedArray,\n Float64Array: Encoder._pushTypedArray,\n URL: Encoder._pushURL,\n Boolean: Encoder._pushBoxed,\n Number: Encoder._pushBoxed,\n String: Encoder._pushBoxed,\n})\n\n// Safari needs to get better.\nif (typeof BigUint64Array !== 'undefined') {\n SEMANTIC_TYPES[BigUint64Array.name] = Encoder._pushTypedArray\n}\nif (typeof BigInt64Array !== 'undefined') {\n SEMANTIC_TYPES[BigInt64Array.name] = Encoder._pushTypedArray\n}\n\nEncoder.reset()\nmodule.exports = Encoder\n","'use strict'\n\nconst {Buffer} = require('buffer')\nconst encoder = require('./encoder')\nconst decoder = require('./decoder')\nconst {MT} = require('./constants')\n\n/**\n * Wrapper around a JavaScript Map object that allows the keys to be\n * any complex type. The base Map object allows this, but will only\n * compare the keys by identity, not by value. CborMap translates keys\n * to CBOR first (and base64's them to ensure by-value comparison).\n *\n * This is not a subclass of Object, because it would be tough to get\n * the semantics to be an exact match.\n *\n * @extends Map\n */\nclass CborMap extends Map {\n /**\n * Creates an instance of CborMap.\n *\n * @param {Iterable<any>} [iterable] An Array or other iterable\n * object whose elements are key-value pairs (arrays with two elements, e.g.\n * <code>[[ 1, 'one' ],[ 2, 'two' ]]</code>). Each key-value pair is added\n * to the new CborMap; null values are treated as undefined.\n */\n constructor(iterable) {\n super(iterable)\n }\n\n /**\n * @ignore\n */\n static _encode(key) {\n return encoder.encodeCanonical(key).toString('base64')\n }\n\n /**\n * @ignore\n */\n static _decode(key) {\n return decoder.decodeFirstSync(key, 'base64')\n }\n\n /**\n * Retrieve a specified element.\n *\n * @param {any} key The key identifying the element to retrieve.\n * Can be any type, which will be serialized into CBOR and compared by\n * value.\n * @returns {any} The element if it exists, or <code>undefined</code>.\n */\n get(key) {\n return super.get(CborMap._encode(key))\n }\n\n /**\n * Adds or updates an element with a specified key and value.\n *\n * @param {any} key The key identifying the element to store.\n * Can be any type, which will be serialized into CBOR and compared by\n * value.\n * @param {any} val The element to store.\n * @returns {this} This object.\n */\n set(key, val) {\n return super.set(CborMap._encode(key), val)\n }\n\n /**\n * Removes the specified element.\n *\n * @param {any} key The key identifying the element to delete. Can be any\n * type, which will be serialized into CBOR and compared by value.\n * @returns {boolean} True if an element in the Map object existed and has\n * been removed, or false if the element does not exist.\n */\n delete(key) {\n return super.delete(CborMap._encode(key))\n }\n\n /**\n * Does an element with the specified key exist?\n *\n * @param {any} key The key identifying the element to check.\n * Can be any type, which will be serialized into CBOR and compared by\n * value.\n * @returns {boolean} True if an element with the specified key exists in\n * the Map object; otherwise false.\n */\n has(key) {\n return super.has(CborMap._encode(key))\n }\n\n /**\n * Returns a new Iterator object that contains the keys for each element\n * in the Map object in insertion order. The keys are decoded into their\n * original format.\n *\n * @yields {any} The keys of the map.\n */\n *keys() {\n for (const k of super.keys()) {\n yield CborMap._decode(k)\n }\n }\n\n /**\n * Returns a new Iterator object that contains the [key, value] pairs for\n * each element in the Map object in insertion order.\n *\n * @returns {IterableIterator<any>} Key value pairs.\n * @yields {any[]} Key value pairs.\n */\n *entries() {\n for (const kv of super.entries()) {\n yield [CborMap._decode(kv[0]), kv[1]]\n }\n }\n\n /**\n * Returns a new Iterator object that contains the [key, value] pairs for\n * each element in the Map object in insertion order.\n *\n * @returns {IterableIterator} Key value pairs.\n */\n [Symbol.iterator]() {\n return this.entries()\n }\n\n /**\n * Executes a provided function once per each key/value pair in the Map\n * object, in insertion order.\n *\n * @param {function(any, any, Map): undefined} fun Function to execute for\n * each element, which takes a value, a key, and the Map being traversed.\n * @param {any} thisArg Value to use as this when executing callback.\n * @throws {TypeError} Invalid function.\n */\n forEach(fun, thisArg) {\n if (typeof fun !== 'function') {\n throw new TypeError('Must be function')\n }\n for (const kv of super.entries()) {\n fun.call(this, kv[1], CborMap._decode(kv[0]), this)\n }\n }\n\n /**\n * Push the simple value onto the CBOR stream.\n *\n * @param {object} gen The generator to push onto.\n * @returns {boolean} True on success.\n */\n encodeCBOR(gen) {\n if (!gen._pushInt(this.size, MT.MAP)) {\n return false\n }\n if (gen.canonical) {\n const entries = Array.from(super.entries())\n .map(kv => [Buffer.from(kv[0], 'base64'), kv[1]])\n entries.sort((a, b) => a[0].compare(b[0]))\n for (const kv of entries) {\n if (!(gen.push(kv[0]) && gen.pushAny(kv[1]))) {\n return false\n }\n }\n } else {\n for (const kv of super.entries()) {\n if (!(gen.push(Buffer.from(kv[0], 'base64')) && gen.pushAny(kv[1]))) {\n return false\n }\n }\n }\n return true\n }\n}\n\nmodule.exports = CborMap\n","'use strict'\n\n/**\n * Record objects that pass by in a stream. If the same object is used more\n * than once, it can be value-shared using shared values.\n *\n * @see {@link http://cbor.schmorp.de/value-sharing}\n */\nclass ObjectRecorder {\n constructor() {\n this.clear()\n }\n\n /**\n * Clear all of the objects that have been seen. Revert to recording mode.\n */\n clear() {\n this.map = new WeakMap()\n this.count = 0\n this.recording = true\n }\n\n /**\n * Stop recording.\n */\n stop() {\n this.recording = false\n }\n\n /**\n * Determine if wrapping a tag 28 or 29 around an object that has been\n * reused is appropriate. This method stores state for which objects have\n * been seen.\n *\n * @param {object} obj Any object about to be serialized.\n * @returns {number} If recording: -1 for first use, index for second use.\n * If not recording, -1 for never-duplicated, -2 for first use, index for\n * subsequent uses.\n * @throws {Error} Recording does not match playback.\n */\n check(obj) {\n const val = this.map.get(obj)\n if (val) {\n if (val.length > 1) {\n if (val[0] || this.recording) {\n return val[1]\n }\n\n val[0] = true\n return ObjectRecorder.FIRST\n }\n if (!this.recording) {\n return ObjectRecorder.NEVER\n }\n val.push(this.count++)\n // Second use while recording\n return val[1]\n }\n if (!this.recording) {\n throw new Error('New object detected when not recording')\n }\n this.map.set(obj, [false])\n // First use while recording\n return ObjectRecorder.NEVER\n }\n}\n\nObjectRecorder.NEVER = -1\nObjectRecorder.FIRST = -2\n\nmodule.exports = ObjectRecorder\n","'use strict'\n\nconst Encoder = require('./encoder')\nconst ObjectRecorder = require('./objectRecorder')\nconst {Buffer} = require('buffer')\n\n/**\n * Implement value sharing.\n *\n * @see {@link cbor.schmorp.de/value-sharing}\n */\nclass SharedValueEncoder extends Encoder {\n constructor(opts) {\n super(opts)\n this.valueSharing = new ObjectRecorder()\n }\n\n /**\n * @param {object} obj Object to encode.\n * @param {import('./encoder').ObjectOptions} [opts] Options for encoding\n * this object.\n * @returns {boolean} True on success.\n * @throws {Error} Loop detected.\n * @ignore\n */\n _pushObject(obj, opts) {\n if (obj !== null) {\n const shared = this.valueSharing.check(obj)\n switch (shared) {\n case ObjectRecorder.FIRST:\n // Prefix with tag 28\n this._pushTag(28)\n break\n case ObjectRecorder.NEVER:\n // Do nothing\n break\n default:\n return this._pushTag(29) && this._pushIntNum(shared)\n }\n }\n return super._pushObject(obj, opts)\n }\n\n /**\n * Between encoding runs, stop recording, and start outputing correct tags.\n */\n stopRecording() {\n this.valueSharing.stop()\n }\n\n /**\n * Remove the existing recording and start over. Do this between encoding\n * pairs.\n */\n clearRecording() {\n this.valueSharing.clear()\n }\n\n /**\n * Encode one or more JavaScript objects, and return a Buffer containing the\n * CBOR bytes.\n *\n * @param {...any} objs The objects to encode.\n * @returns {Buffer} The encoded objects.\n */\n static encode(...objs) {\n const enc = new SharedValueEncoder()\n // eslint-disable-next-line no-empty-function\n enc.on('data', () => {}) // Sink all writes\n\n for (const o of objs) {\n enc.pushAny(o)\n }\n enc.stopRecording()\n enc.removeAllListeners('data')\n return enc._encodeAll(objs)\n }\n\n // eslint-disable-next-line jsdoc/require-returns-check\n /**\n * Encode one or more JavaScript objects canonically (slower!), and return\n * a Buffer containing the CBOR bytes.\n *\n * @param {...any} objs The objects to encode.\n * @returns {Buffer} Never.\n * @throws {Error} Always. This combination doesn't work at the moment.\n */\n static encodeCanonical(...objs) {\n throw new Error('Cannot encode canonically in a SharedValueEncoder, which serializes objects multiple times.')\n }\n\n /**\n * Encode one JavaScript object using the given options.\n *\n * @param {any} obj The object to encode.\n * @param {import('./encoder').EncodingOptions} [options={}]\n * Passed to the Encoder constructor.\n * @returns {Buffer} The encoded objects.\n * @static\n */\n static encodeOne(obj, options) {\n const enc = new SharedValueEncoder(options)\n // eslint-disable-next-line no-empty-function\n enc.on('data', () => {}) // Sink all writes\n enc.pushAny(obj)\n enc.stopRecording()\n enc.removeAllListeners('data')\n return enc._encodeAll([obj])\n }\n\n /**\n * Encode one JavaScript object using the given options in a way that\n * is more resilient to objects being larger than the highWaterMark\n * number of bytes. As with the other static encode functions, this\n * will still use a large amount of memory. Use a stream-based approach\n * directly if you need to process large and complicated inputs.\n *\n * @param {any} obj The object to encode.\n * @param {import('./encoder').EncodingOptions} [options={}]\n * Passed to the Encoder constructor.\n * @returns {Promise<Buffer>} A promise for the encoded buffer.\n */\n static encodeAsync(obj, options) {\n return new Promise((resolve, reject) => {\n /** @type {Buffer[]} */\n const bufs = []\n const enc = new SharedValueEncoder(options)\n // eslint-disable-next-line no-empty-function\n enc.on('data', () => {})\n enc.on('error', reject)\n enc.on('finish', () => resolve(Buffer.concat(bufs)))\n enc.pushAny(obj)\n enc.stopRecording()\n enc.removeAllListeners('data')\n enc.on('data', buf => bufs.push(buf))\n enc.pushAny(obj)\n enc.end()\n })\n }\n}\n\nmodule.exports = SharedValueEncoder\n","'use strict'\n\nconst {MT, SIMPLE, SYMS} = require('./constants')\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {number} value The simple value's integer value.\n */\n constructor(value) {\n if (typeof value !== 'number') {\n throw new Error(`Invalid Simple type: ${typeof value}`)\n }\n if ((value < 0) || (value > 255) || ((value | 0) !== value)) {\n throw new Error(`value must be a small positive integer: ${value}`)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value.\n *\n * @returns {string} Formated string of `simple(value)`.\n */\n toString() {\n return `simple(${this.value})`\n }\n\n /**\n * Debug string for simple value.\n *\n * @param {number} depth How deep are we?\n * @param {object} opts Options.\n * @returns {string} Formatted string of `simple(value)`.\n */\n [Symbol.for('nodejs.util.inspect.custom')](depth, opts) {\n return `simple(${this.value})`\n }\n\n /**\n * Push the simple value onto the CBOR stream.\n *\n * @param {object} gen The generator to push onto.\n * @returns {boolean} True on success.\n */\n encodeCBOR(gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj Object to test.\n * @returns {boolean} Is it Simple?\n */\n static isSimple(obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {number} val The CBOR additional info to convert.\n * @param {boolean} [has_parent=true] Does the CBOR item have a parent?\n * @param {boolean} [parent_indefinite=false] Is the parent element\n * indefinitely encoded?\n * @returns {(null|undefined|boolean|symbol|Simple)} The decoded value.\n * @throws {Error} Invalid BREAK.\n */\n static decode(val, has_parent = true, parent_indefinite = false) {\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (has_parent) {\n return null\n }\n return SYMS.NULL\n case SIMPLE.UNDEFINED:\n if (has_parent) {\n return undefined\n }\n return SYMS.UNDEFINED\n case -1:\n if (!has_parent || !parent_indefinite) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n","'use strict'\n\nconst constants = require('./constants')\nconst utils = require('./utils')\nconst INTERNAL_JSON = Symbol('INTERNAL_JSON')\n\nfunction setBuffersToJSON(obj, fn) {\n // The data item tagged can be a byte string or any other data item. In the\n // latter case, the tag applies to all of the byte string data items\n // contained in the data item, except for those contained in a nested data\n // item tagged with an expected conversion.\n if (utils.isBufferish(obj)) {\n obj.toJSON = fn\n } else if (Array.isArray(obj)) {\n for (const v of obj) {\n setBuffersToJSON(v, fn)\n }\n } else if (obj && (typeof obj === 'object')) {\n // FFS, complexity in the protocol.\n\n // There's some circular dependency in here.\n // eslint-disable-next-line no-use-before-define\n if (!(obj instanceof Tagged) || (obj.tag < 21) || (obj.tag > 23)) {\n for (const v of Object.values(obj)) {\n setBuffersToJSON(v, fn)\n }\n }\n }\n}\n\nfunction b64this() {\n // eslint-disable-next-line no-invalid-this\n return utils.base64(this)\n}\n\nfunction b64urlThis() {\n // eslint-disable-next-line no-invalid-this\n return utils.base64url(this)\n}\n\nfunction hexThis() {\n // eslint-disable-next-line no-invalid-this\n return this.toString('hex')\n}\n\nfunction swapEndian(ab, size, byteOffset, byteLength) {\n const dv = new DataView(ab)\n const [getter, setter] = {\n 2: [dv.getUint16, dv.setUint16],\n 4: [dv.getUint32, dv.setUint32],\n 8: [dv.getBigUint64, dv.setBigUint64],\n }[size]\n\n const end = byteOffset + byteLength\n for (let offset = byteOffset; offset < end; offset += size) {\n setter.call(dv, offset, getter.call(dv, offset, true))\n }\n}\n\n/**\n * Convert a tagged value to a more interesting JavaScript type. Errors\n * thrown in this function will be captured into the \"err\" property of the\n * original Tagged instance.\n *\n * @callback TagFunction\n * @param {any} value The value inside the tag.\n * @param {Tagged} tag The enclosing Tagged instance; useful if you want to\n * modify it and return it. Also available as \"this\".\n * @returns {any} The transformed value.\n */\n\n/* eslint-disable jsdoc/check-types */\n/**\n * A mapping from tag number to a tag decoding function.\n *\n * @typedef {Object.<string, TagFunction>} TagMap\n */\n/* eslint-enable jsdoc/check-types */\n\n/**\n * @type {TagMap}\n * @private\n */\nconst TAGS = {\n // Standard date/time string; see Section 3.4.1\n 0: v => new Date(v),\n // Epoch-based date/time; see Section 3.4.2\n 1: v => new Date(v * 1000),\n // Positive bignum; see Section 3.4.3\n 2: v => utils.bufferToBigInt(v),\n // Negative bignum; see Section 3.4.3\n 3: v => constants.BI.MINUS_ONE - utils.bufferToBigInt(v),\n // Expected conversion to base64url encoding; see Section 3.4.5.2\n 21: (v, tag) => {\n if (utils.isBufferish(v)) {\n tag[INTERNAL_JSON] = b64urlThis\n } else {\n setBuffersToJSON(v, b64urlThis)\n }\n return tag\n },\n // Expected conversion to base64 encoding; see Section 3.4.5.2\n 22: (v, tag) => {\n if (utils.isBufferish(v)) {\n tag[INTERNAL_JSON] = b64this\n } else {\n setBuffersToJSON(v, b64this)\n }\n return tag\n },\n // Expected conversion to base16 encoding; see Section Section 3.4.5.2\n 23: (v, tag) => {\n if (utils.isBufferish(v)) {\n tag[INTERNAL_JSON] = hexThis\n } else {\n setBuffersToJSON(v, hexThis)\n }\n return tag\n },\n // URI; see Section 3.4.5.3\n 32: v => new URL(v),\n // Base64url; see Section 3.4.5.3\n 33: (v, tag) => {\n // If any of the following apply:\n // - the encoded text string contains non-alphabet characters or\n // only 1 alphabet character in the last block of 4 (where\n // alphabet is defined by Section 5 of [RFC4648] for tag number 33\n // and Section 4 of [RFC4648] for tag number 34), or\n if (!v.match(/^[a-zA-Z0-9_-]+$/)) {\n throw new Error('Invalid base64url characters')\n }\n const last = v.length % 4\n if (last === 1) {\n throw new Error('Invalid base64url length')\n }\n // - the padding bits in a 2- or 3-character block are not 0, or\n if (last === 2) {\n // The last 4 bits of the last character need to be zero.\n if ('AQgw'.indexOf(v[v.length - 1]) === -1) {\n throw new Error('Invalid base64 padding')\n }\n } else if (last === 3) {\n // The last 2 bits of the last character need to be zero.\n if ('AEIMQUYcgkosw048'.indexOf(v[v.length - 1]) === -1) {\n throw new Error('Invalid base64 padding')\n }\n }\n\n // Or\n // - the base64url encoding has padding characters,\n // (caught above)\n\n // the string is invalid.\n return tag\n },\n // Base64; see Section 3.4.5.3\n 34: (v, tag) => {\n // If any of the following apply:\n // - the encoded text string contains non-alphabet characters or\n // only 1 alphabet character in the last block of 4 (where\n // alphabet is defined by Section 5 of [RFC4648] for tag number 33\n // and Section 4 of [RFC4648] for tag number 34), or\n const m = v.match(/^[a-zA-Z0-9+/]+(?<padding>={0,2})$/)\n if (!m) {\n throw new Error('Invalid base64 characters')\n }\n if ((v.length % 4) !== 0) {\n throw new Error('Invalid base64 length')\n }\n // - the padding bits in a 2- or 3-character block are not 0, or\n if (m.groups.padding === '=') {\n // The last 4 bits of the last character need to be zero.\n if ('AQgw'.indexOf(v[v.length - 2]) === -1) {\n throw new Error('Invalid base64 padding')\n }\n } else if (m.groups.padding === '==') {\n // The last 2 bits of the last character need to be zero.\n if ('AEIMQUYcgkosw048'.indexOf(v[v.length - 3]) === -1) {\n throw new Error('Invalid base64 padding')\n }\n }\n\n // - the base64 encoding has the wrong number of padding characters,\n // (caught above)\n // the string is invalid.\n return tag\n },\n // Regular expression; see Section 2.4.4.3\n 35: v => new RegExp(v),\n // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\n 258: v => new Set(v),\n}\n\nconst TYPED_ARRAY_TAGS = {\n 64: Uint8Array,\n 65: Uint16Array,\n 66: Uint32Array,\n // 67: BigUint64Array, Safari doesn't implement\n 68: Uint8ClampedArray,\n 69: Uint16Array,\n 70: Uint32Array,\n // 71: BigUint64Array, Safari doesn't implement\n 72: Int8Array,\n 73: Int16Array,\n 74: Int32Array,\n // 75: BigInt64Array, Safari doesn't implement\n // 76: reserved\n 77: Int16Array,\n 78: Int32Array,\n // 79: BigInt64Array, Safari doesn't implement\n // 80: not implemented, float16 array\n 81: Float32Array,\n 82: Float64Array,\n // 83: not implemented, float128 array\n // 84: not implemented, float16 array\n 85: Float32Array,\n 86: Float64Array,\n // 87: not implemented, float128 array\n}\n\n// Safari\nif (typeof BigUint64Array !== 'undefined') {\n TYPED_ARRAY_TAGS[67] = BigUint64Array\n TYPED_ARRAY_TAGS[71] = BigUint64Array\n}\nif (typeof BigInt64Array !== 'undefined') {\n TYPED_ARRAY_TAGS[75] = BigInt64Array\n TYPED_ARRAY_TAGS[79] = BigInt64Array\n}\n\nfunction _toTypedArray(val, tagged) {\n if (!utils.isBufferish(val)) {\n throw new TypeError('val not a buffer')\n }\n const {tag} = tagged\n // See https://tools.ietf.org/html/rfc8746\n const TypedClass = TYPED_ARRAY_TAGS[tag]\n if (!TypedClass) {\n throw new Error(`Invalid typed array tag: ${tag}`)\n }\n const little = tag & 0b00000100\n const float = (tag & 0b00010000) >> 4\n const sz = 2 ** (float + (tag & 0b00000011))\n\n if ((!little !== utils.isBigEndian()) && (sz > 1)) {\n swapEndian(val.buffer, sz, val.byteOffset, val.byteLength)\n }\n\n const ab = val.buffer.slice(val.byteOffset, val.byteOffset + val.byteLength)\n return new TypedClass(ab)\n}\n\nfor (const n of Object.keys(TYPED_ARRAY_TAGS)) {\n TAGS[n] = _toTypedArray\n}\n\n/**\n * @type {TagMap}\n * @private\n */\nlet current_TAGS = {}\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {number} tag The number of the tag.\n * @param {any} value The value inside the tag.\n * @param {Error} [err] The error that was thrown parsing the tag, or null.\n */\n constructor(tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error(`Invalid tag type (${typeof this.tag})`)\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error(`Tag must be a positive integer: ${this.tag}`)\n }\n }\n\n toJSON() {\n if (this[INTERNAL_JSON]) {\n return this[INTERNAL_JSON].call(this.value)\n }\n const ret = {\n tag: this.tag,\n value: this.value,\n }\n if (this.err) {\n ret.err = this.err\n }\n return ret\n }\n\n /**\n * Convert to a String.\n *\n * @returns {string} String of the form '1(2)'.\n */\n toString() {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream.\n *\n * @param {object} gen The generator to push onto.\n * @returns {boolean} True on success.\n */\n encodeCBOR(gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {object} converters Keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} The converted item.\n */\n convert(converters) {\n let f = (converters == null) ? undefined : converters[this.tag]\n if (f === null) { // === is intentional. null has semantic meaning as above\n return this\n }\n if (typeof f !== 'function') {\n f = Tagged.TAGS[this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(this, this.value, this)\n } catch (error) {\n if (error && error.message && (error.message.length > 0)) {\n this.err = error.message\n } else {\n this.err = error\n }\n return this\n }\n }\n\n /**\n * The current set of supported tags. May be modified by plugins.\n *\n * @type {TagMap}\n * @static\n */\n static get TAGS() {\n return current_TAGS\n }\n\n static set TAGS(val) {\n current_TAGS = val\n }\n\n /**\n * Reset the supported tags to the original set, before any plugins modified\n * the list.\n */\n static reset() {\n Tagged.TAGS = {...TAGS}\n }\n}\nTagged.INTERNAL_JSON = INTERNAL_JSON\nTagged.reset()\nmodule.exports = Tagged\n","'use strict'\n\nconst {Buffer} = require('buffer')\nconst NoFilter = require('nofilter')\nconst stream = require('stream')\nconst constants = require('./constants')\nconst {NUMBYTES, SHIFT32, BI, SYMS} = constants\nconst MAX_SAFE_HIGH = 0x1fffff\n\n/**\n * Convert a UTF8-encoded Buffer to a JS string. If possible, throw an error\n * on invalid UTF8. Byte Order Marks are not looked at or stripped.\n *\n * @private\n */\nconst td = new TextDecoder('utf8', {fatal: true, ignoreBOM: true})\nexports.utf8 = buf => td.decode(buf)\nexports.utf8.checksUTF8 = true\n\nfunction isReadable(s) {\n // Is this a readable stream? In the webpack version, instanceof isn't\n // working correctly.\n if (s instanceof stream.Readable) {\n return true\n }\n return ['read', 'on', 'pipe'].every(f => typeof s[f] === 'function')\n}\n\nexports.isBufferish = function isBufferish(b) {\n return b &&\n (typeof b === 'object') &&\n ((Buffer.isBuffer(b)) ||\n (b instanceof Uint8Array) ||\n (b instanceof Uint8ClampedArray) ||\n (b instanceof ArrayBuffer) ||\n (b instanceof DataView))\n}\n\nexports.bufferishToBuffer = function bufferishToBuffer(b) {\n if (Buffer.isBuffer(b)) {\n return b\n } else if (ArrayBuffer.isView(b)) {\n return Buffer.from(b.buffer, b.byteOffset, b.byteLength)\n } else if (b instanceof ArrayBuffer) {\n return Buffer.from(b)\n }\n return null\n}\n\nexports.parseCBORint = function parseCBORint(ai, buf) {\n switch (ai) {\n case NUMBYTES.ONE:\n return buf.readUInt8(0)\n case NUMBYTES.TWO:\n return buf.readUInt16BE(0)\n case NUMBYTES.FOUR:\n return buf.readUInt32BE(0)\n case NUMBYTES.EIGHT: {\n const f = buf.readUInt32BE(0)\n const g = buf.readUInt32BE(4)\n if (f > MAX_SAFE_HIGH) {\n return (BigInt(f) * BI.SHIFT32) + BigInt(g)\n }\n return (f * SHIFT32) + g\n }\n default:\n throw new Error(`Invalid additional info for int: ${ai}`)\n }\n}\n\nexports.writeHalf = function writeHalf(buf, half) {\n // Assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = Buffer.allocUnsafe(4)\n u32.writeFloatBE(half, 0)\n const u = u32.readUInt32BE(0)\n\n // If ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits aren't 0,\n // we will lose precision in the conversion.\n // mant32 = 24bits, mant16 = 11bits, 24-11 = 13\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // Sign, exponent, mantissa\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n let s16 = (u >> 16) & 0x8000 // Top bit is sign\n const exp = (u >> 23) & 0xff // Then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // Hildjj: zeros already handled. Assert if you don't believe me.\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n } else if ((exp >= 103) && (exp < 113)) {\n // Denormalized numbers\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n } else {\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n\n return false\n }\n\n // Done\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16)\n return true\n}\n\nexports.parseHalf = function parseHalf(buf) {\n const sign = buf[0] & 0x80 ? -1 : 1\n const exp = (buf[0] & 0x7C) >> 2\n const mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? NaN : Infinity)\n }\n return sign * (2 ** (exp - 25)) * (1024 + mant)\n}\n\nexports.parseCBORfloat = function parseCBORfloat(buf) {\n switch (buf.length) {\n case 2:\n return exports.parseHalf(buf)\n case 4:\n return buf.readFloatBE(0)\n case 8:\n return buf.readDoubleBE(0)\n default:\n throw new Error(`Invalid float size: ${buf.length}`)\n }\n}\n\nexports.hex = function hex(s) {\n return Buffer.from(s.replace(/^0x/, ''), 'hex')\n}\n\nexports.bin = function bin(s) {\n s = s.replace(/\\s/g, '')\n let start = 0\n let end = (s.length % 8) || 8\n const chunks = []\n while (end <= s.length) {\n chunks.push(parseInt(s.slice(start, end), 2))\n start = end\n end += 8\n }\n return Buffer.from(chunks)\n}\n\nexports.arrayEqual = function arrayEqual(a, b) {\n if ((a == null) && (b == null)) {\n return true\n }\n if ((a == null) || (b == null)) {\n return false\n }\n return (a.length === b.length) && a.every((elem, i) => elem === b[i])\n}\n\nexports.bufferToBigInt = function bufferToBigInt(buf) {\n return BigInt(`0x${buf.toString('hex')}`)\n}\n\nexports.cborValueToString = function cborValueToString(val, float_bytes = -1) {\n switch (typeof val) {\n case 'symbol': {\n switch (val) {\n case SYMS.NULL:\n return 'null'\n case SYMS.UNDEFINED:\n return 'undefined'\n case SYMS.BREAK:\n return 'BREAK'\n }\n // Impossible in node 10\n /* istanbul ignore if */\n if (val.description) {\n return val.description\n }\n // On node10, Symbol doesn't have description. Parse it out of the\n // toString value, which looks like `Symbol(foo)`.\n const s = val.toString()\n const m = s.match(/^Symbol\\((?<name>.*)\\)/)\n /* istanbul ignore if */\n if (m && m.groups.name) {\n // Impossible in node 12+\n /* istanbul ignore next */\n return m.groups.name\n }\n return 'Symbol'\n }\n case 'string':\n return JSON.stringify(val)\n case 'bigint':\n return val.toString()\n case 'number': {\n const s = Object.is(val, -0) ? '-0' : String(val)\n return (float_bytes > 0) ? `${s}_${float_bytes}` : s\n }\n case 'object': {\n if (!val) {\n return 'null'\n }\n const buf = exports.bufferishToBuffer(val)\n if (buf) {\n const hex = buf.toString('hex')\n return (float_bytes === -Infinity) ? hex : `h'${hex}'`\n }\n if (val && typeof val[Symbol.for('nodejs.util.inspect.custom')] === 'function') {\n return val[Symbol.for('nodejs.util.inspect.custom')]()\n }\n // Shouldn't get non-empty arrays here\n if (Array.isArray(val)) {\n return '[]'\n }\n // This should be all that is left\n return '{}'\n }\n }\n return String(val)\n}\n\nexports.guessEncoding = function guessEncoding(input, encoding) {\n if (typeof input === 'string') {\n return new NoFilter(input, (encoding == null) ? 'hex' : encoding)\n }\n const buf = exports.bufferishToBuffer(input)\n if (buf) {\n return new NoFilter(buf)\n }\n if (isReadable(input)) {\n return input\n }\n throw new Error('Unknown input type')\n}\n\nconst B64URL_SWAPS = {\n '=': '',\n '+': '-',\n '/': '_',\n}\n\n/**\n * @param {Buffer|Uint8Array|Uint8ClampedArray|ArrayBuffer|DataView} buf\n * Buffer to convert.\n * @returns {string} Base64url string.\n * @private\n */\nexports.base64url = function base64url(buf) {\n return exports.bufferishToBuffer(buf)\n .toString('base64')\n .replace(/[=+/]/g, c => B64URL_SWAPS[c])\n}\n\n/**\n * @param {Buffer|Uint8Array|Uint8ClampedArray|ArrayBuffer|DataView} buf\n * Buffer to convert.\n * @returns {string} Base64 string.\n * @private\n */\nexports.base64 = function base64(buf) {\n return exports.bufferishToBuffer(buf).toString('base64')\n}\n\nexports.isBigEndian = function isBigEndian() {\n const array = new Uint8Array(4)\n const view = new Uint32Array(array.buffer)\n return !((view[0] = 1) & array[0])\n}\n","// Tweaked version of nathan7's binary-parse-stream\n// (see https://github.com/nathan7/binary-parse-stream)\n// Uses NoFilter instead of the readable in the original. Removes\n// the ability to read -1, which was odd and un-needed.\n// License for binary-parse-stream: MIT\n\n// binary-parse-stream is now unmaintained, so I have rewritten it as\n// more modern JS so I can get tsc to help check types.\n\n'use strict'\nconst stream = require('stream')\nconst NoFilter = require('nofilter')\n\n/**\n * BinaryParseStream is a TransformStream that consumes buffers and outputs\n * objects on the other end. It expects your subclass to implement a `_parse`\n * method that is a generator. When your generator yields a number, it'll be\n * fed a buffer of that length from the input. When your generator returns,\n * the return value will be pushed to the output side.\n *\n * @extends stream.Transform\n */\nclass BinaryParseStream extends stream.Transform {\n /**\n * Creates an instance of BinaryParseStream.\n *\n * @memberof BinaryParseStream\n * @param {stream.TransformOptions} options Stream options.\n */\n constructor(options) {\n super(options)\n // Doesn't work to pass these in as opts, for some reason\n // also, work around typescript not knowing TransformStream internals\n // eslint-disable-next-line dot-notation\n this['_writableState'].objectMode = false\n // eslint-disable-next-line dot-notation\n this['_readableState'].objectMode = true\n\n this.bs = new NoFilter()\n this.__restart()\n }\n\n /**\n * Transforming.\n *\n * @param {any} fresh Buffer to transcode.\n * @param {BufferEncoding} encoding Name of encoding.\n * @param {stream.TransformCallback} cb Callback when done.\n * @ignore\n */\n _transform(fresh, encoding, cb) {\n this.bs.write(fresh)\n\n while (this.bs.length >= this.__needed) {\n let ret = null\n const chunk = (this.__needed === null) ?\n undefined :\n this.bs.read(this.__needed)\n\n try {\n ret = this.__parser.next(chunk)\n } catch (e) {\n return cb(e)\n }\n\n if (this.__needed) {\n this.__fresh = false\n }\n\n if (ret.done) {\n this.push(ret.value)\n this.__restart()\n } else {\n this.__needed = ret.value || Infinity\n }\n }\n\n return cb()\n }\n\n /**\n * Subclasses must override this to set their parsing behavior. Yield a\n * number to receive a Buffer of that many bytes.\n *\n * @abstract\n * @returns {Generator<number, any, Buffer>}\n */\n /* istanbul ignore next */\n *_parse() { // eslint-disable-line class-methods-use-this, require-yield\n throw new Error('Must be implemented in subclass')\n }\n\n __restart() {\n this.__needed = null\n this.__parser = this._parse()\n this.__fresh = true\n }\n\n /**\n * Flushing.\n *\n * @param {stream.TransformCallback} cb Callback when done.\n * @ignore\n */\n _flush(cb) {\n cb(this.__fresh ? null : new Error('unexpected end of input'))\n }\n}\n\nmodule.exports = BinaryParseStream\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 R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\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.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\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 setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.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","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (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 };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (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}\n","'use strict'\n\nconst stream = require('stream')\nconst {Buffer} = require('buffer')\nconst td = new TextDecoder('utf8', {fatal: true, ignoreBOM: true})\n\n/**\n * @typedef {object} NoFilterOptions\n * @property {string|Buffer} [input=null] Input source data.\n * @property {BufferEncoding} [inputEncoding=null] Encoding name for input,\n * ignored if input is not a String.\n * @property {number} [highWaterMark=16384] The maximum number of bytes to\n * store in the internal buffer before ceasing to read from the underlying\n * resource. Default=16kb, or 16 for objectMode streams.\n * @property {BufferEncoding} [encoding=null] If specified, then buffers\n * will be decoded to strings using the specified encoding.\n * @property {boolean} [objectMode=false] Whether this stream should behave\n * as a stream of objects. Meaning that stream.read(n) returns a single\n * value instead of a Buffer of size n.\n * @property {boolean} [decodeStrings=true] Whether or not to decode\n * strings into Buffers before passing them to _write().\n * @property {boolean} [watchPipe=true] Whether to watch for 'pipe' events,\n * setting this stream's objectMode based on the objectMode of the input\n * stream.\n * @property {boolean} [readError=false] If true, when a read() underflows,\n * throw an error.\n * @property {boolean} [allowHalfOpen=true] If set to false, then the\n * stream will automatically end the writable side when the readable side\n * ends.\n * @property {boolean} [autoDestroy=true] Whether this stream should\n * automatically call .destroy() on itself after ending.\n * @property {BufferEncoding} [defaultEncoding='utf8'] The default encoding\n * that is used when no encoding is specified as an argument to\n * stream.write().\n * @property {boolean} [emitClose=true] Whether or not the stream should\n * emit 'close' after it has been destroyed.\n * @property {number} [readableHighWaterMark] Sets highWaterMark for the\n * readable side of the stream. Has no effect if highWaterMark is provided.\n * @property {boolean} [readableObjectMode=false] Sets objectMode for\n * readable side of the stream. Has no effect if objectMode is true.\n * @property {number} [writableHighWaterMark] Sets highWaterMark for the\n * writable side of the stream. Has no effect if highWaterMark is provided.\n * @property {boolean} [writableObjectMode=false] Sets objectMode for\n * writable side of the stream. Has no effect if objectMode is true.\n */\n\n/**\n * NoFilter stream. Can be used to sink or source data to and from\n * other node streams. Implemented as the \"identity\" Transform stream\n * (hence the name), but allows for inspecting data that is in-flight.\n *\n * Allows passing in source data (input, inputEncoding) at creation\n * time. Source data can also be passed in the options object.\n *\n * @example <caption>source and sink</caption>\n * const source = new NoFilter('Zm9v', 'base64')\n * source.pipe(process.stdout)\n * const sink = new Nofilter()\n * // NOTE: 'finish' fires when the input is done writing\n * sink.on('finish', () => console.log(n.toString('base64')))\n * process.stdin.pipe(sink)\n */\nclass NoFilter extends stream.Transform {\n /**\n * Create an instance of NoFilter.\n *\n * @param {string|Buffer|BufferEncoding|NoFilterOptions} [input] Source data.\n * @param {BufferEncoding|NoFilterOptions} [inputEncoding] Encoding\n * name for input, ignored if input is not a String.\n * @param {NoFilterOptions} [options] Other options.\n */\n constructor(input, inputEncoding, options = {}) {\n let inp = null\n let inpE = /** @type {BufferEncoding?} */ (null)\n switch (typeof input) {\n case 'object':\n if (Buffer.isBuffer(input)) {\n inp = input\n } else if (input) {\n options = input\n }\n break\n case 'string':\n inp = input\n break\n case 'undefined':\n break\n default:\n throw new TypeError('Invalid input')\n }\n switch (typeof inputEncoding) {\n case 'object':\n if (inputEncoding) {\n options = inputEncoding\n }\n break\n case 'string':\n inpE = /** @type {BufferEncoding} */ (inputEncoding)\n break\n case 'undefined':\n break\n default:\n throw new TypeError('Invalid inputEncoding')\n }\n if (!options || typeof options !== 'object') {\n throw new TypeError('Invalid options')\n }\n if (inp == null) {\n inp = options.input\n }\n if (inpE == null) {\n inpE = options.inputEncoding\n }\n delete options.input\n delete options.inputEncoding\n const watchPipe = options.watchPipe == null ? true : options.watchPipe\n delete options.watchPipe\n const readError = Boolean(options.readError)\n delete options.readError\n super(options)\n\n this.readError = readError\n\n if (watchPipe) {\n this.on('pipe', readable => {\n // @ts-ignore: TS2339 (using internal interface)\n const om = readable._readableState.objectMode\n // @ts-ignore: TS2339 (using internal interface)\n if ((this.length > 0) && (om !== this._readableState.objectMode)) {\n throw new Error(\n 'Do not switch objectMode in the middle of the stream'\n )\n }\n\n // @ts-ignore: TS2339 (using internal interface)\n this._readableState.objectMode = om\n // @ts-ignore: TS2339 (using internal interface)\n this._writableState.objectMode = om\n })\n }\n\n if (inp != null) {\n this.end(inp, inpE)\n }\n }\n\n /**\n * Is the given object a {NoFilter}?\n *\n * @param {object} obj The object to test.\n * @returns {boolean} True if obj is a NoFilter.\n */\n static isNoFilter(obj) {\n return obj instanceof this\n }\n\n /**\n * The same as nf1.compare(nf2). Useful for sorting an Array of NoFilters.\n *\n * @param {NoFilter} nf1 The first object to compare.\n * @param {NoFilter} nf2 The second object to compare.\n * @returns {number} -1, 0, 1 for less, equal, greater.\n * @throws {TypeError} Arguments not NoFilter instances.\n * @example\n * const arr = [new NoFilter('1234'), new NoFilter('0123')]\n * arr.sort(NoFilter.compare)\n */\n static compare(nf1, nf2) {\n if (!(nf1 instanceof this)) {\n throw new TypeError('Arguments must be NoFilters')\n }\n if (nf1 === nf2) {\n return 0\n }\n return nf1.compare(nf2)\n }\n\n /**\n * Returns a buffer which is the result of concatenating all the\n * NoFilters in the list together. If the list has no items, or if\n * the totalLength is 0, then it returns a zero-length buffer.\n *\n * If length is not provided, it is read from the buffers in the\n * list. However, this adds an additional loop to the function, so\n * it is faster to provide the length explicitly if you already know it.\n *\n * @param {Array<NoFilter>} list Inputs. Must not be all either in object\n * mode, or all not in object mode.\n * @param {number} [length=null] Number of bytes or objects to read.\n * @returns {Buffer|Array} The concatenated values as an array if in object\n * mode, otherwise a Buffer.\n * @throws {TypeError} List not array of NoFilters.\n */\n static concat(list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('list argument must be an Array of NoFilters')\n }\n if ((list.length === 0) || (length === 0)) {\n return Buffer.alloc(0)\n }\n if ((length == null)) {\n length = list.reduce((tot, nf) => {\n if (!(nf instanceof NoFilter)) {\n throw new TypeError('list argument must be an Array of NoFilters')\n }\n return tot + nf.length\n }, 0)\n }\n let allBufs = true\n let allObjs = true\n const bufs = list.map(nf => {\n if (!(nf instanceof NoFilter)) {\n throw new TypeError('list argument must be an Array of NoFilters')\n }\n const buf = nf.slice()\n if (Buffer.isBuffer(buf)) {\n allObjs = false\n } else {\n allBufs = false\n }\n return buf\n })\n if (allBufs) {\n // @ts-ignore: TS2322, tsc can't see the type checking above\n return Buffer.concat(bufs, length)\n }\n if (allObjs) {\n return [].concat(...bufs).slice(0, length)\n }\n // TODO: maybe coalesce buffers, counting bytes, and flatten in arrays\n // counting objects? I can't imagine why that would be useful.\n throw new Error('Concatenating mixed object and byte streams not supported')\n }\n\n /**\n * @ignore\n */\n _transform(chunk, encoding, callback) {\n // @ts-ignore: TS2339 (using internal interface)\n if (!this._readableState.objectMode && !Buffer.isBuffer(chunk)) {\n chunk = Buffer.from(chunk, encoding)\n }\n this.push(chunk)\n callback()\n }\n\n /**\n * @returns {Buffer[]} The current internal buffers. They are layed out\n * end to end.\n * @ignore\n */\n _bufArray() {\n // @ts-ignore: TS2339 (using internal interface)\n let bufs = this._readableState.buffer\n // HACK: replace with something else one day. This is what I get for\n // relying on internals.\n if (!Array.isArray(bufs)) {\n let b = bufs.head\n bufs = []\n while (b != null) {\n bufs.push(b.data)\n b = b.next\n }\n }\n return bufs\n }\n\n /**\n * Pulls some data out of the internal buffer and returns it.\n * If there is no data available, then it will return null.\n *\n * If you pass in a size argument, then it will return that many bytes. If\n * size bytes are not available, then it will return null, unless we've\n * ended, in which case it will return the data remaining in the buffer.\n *\n * If you do not specify a size argument, then it will return all the data in\n * the internal buffer.\n *\n * @param {number} [size=null] Number of bytes to read.\n * @returns {string|Buffer|null} If no data or not enough data, null. If\n * decoding output a string, otherwise a Buffer.\n * @throws Error If readError is true and there was underflow.\n * @fires NoFilter#read When read from.\n */\n read(size) {\n const buf = super.read(size)\n if (buf != null) {\n /**\n * Read event. Fired whenever anything is read from the stream.\n *\n * @event NoFilter#read\n * @param {Buffer|string|object} buf What was read.\n */\n this.emit('read', buf)\n if (this.readError && (buf.length < size)) {\n throw new Error(`Read ${buf.length}, wanted ${size}`)\n }\n } else if (this.readError) {\n throw new Error(`No data available, wanted ${size}`)\n }\n return buf\n }\n\n /**\n * Read the full number of bytes asked for, no matter how long it takes.\n * Fail if an error occurs in the meantime, or if the stream finishes before\n * enough data is available.\n *\n * Note: This function won't work fully correctly if you are using\n * stream-browserify (for example, on the Web).\n *\n * @param {number} size The number of bytes to read.\n * @returns {Promise<string|Buffer>} A promise for the data read.\n */\n readFull(size) {\n let onReadable = null\n let onFinish = null\n let onError = null\n return new Promise((resolve, reject) => {\n if (this.length >= size) {\n resolve(this.read(size))\n return\n }\n\n // Added in Node 12.19. This won't work with stream-browserify yet.\n // If it's needed, file a bug, and I'll do a work-around.\n if (this.writableFinished) {\n // Already finished writing, so no more coming.\n reject(new Error(`Stream finished before ${size} bytes were available`))\n return\n }\n\n onReadable = chunk => {\n if (this.length >= size) {\n resolve(this.read(size))\n }\n }\n onFinish = () => {\n reject(new Error(`Stream finished before ${size} bytes were available`))\n }\n onError = reject\n this.on('readable', onReadable)\n this.on('error', onError)\n this.on('finish', onFinish)\n }).finally(() => {\n if (onReadable) {\n this.removeListener('readable', onReadable)\n this.removeListener('error', onError)\n this.removeListener('finish', onFinish)\n }\n })\n }\n\n /**\n * Return a promise fulfilled with the full contents, after the 'finish'\n * event fires. Errors on the stream cause the promise to be rejected.\n *\n * @param {Function} [cb=null] Finished/error callback used in *addition*\n * to the promise.\n * @returns {Promise<Buffer|string>} Fulfilled when complete.\n */\n promise(cb) {\n let done = false\n return new Promise((resolve, reject) => {\n this.on('finish', () => {\n const data = this.read()\n if ((cb != null) && !done) {\n done = true\n cb(null, data)\n }\n resolve(data)\n })\n this.on('error', er => {\n if ((cb != null) && !done) {\n done = true\n cb(er)\n }\n reject(er)\n })\n })\n }\n\n /**\n * Returns a number indicating whether this comes before or after or is the\n * same as the other NoFilter in sort order.\n *\n * @param {NoFilter} other The other object to compare.\n * @returns {number} -1, 0, 1 for less, equal, greater.\n * @throws {TypeError} Arguments must be NoFilters.\n */\n compare(other) {\n if (!(other instanceof NoFilter)) {\n throw new TypeError('Arguments must be NoFilters')\n }\n if (this === other) {\n return 0\n }\n\n const buf1 = this.slice()\n const buf2 = other.slice()\n // These will both be buffers because of the check above.\n if (Buffer.isBuffer(buf1) && Buffer.isBuffer(buf2)) {\n return buf1.compare(buf2)\n }\n throw new Error('Cannot compare streams in object mode')\n }\n\n /**\n * Do these NoFilter's contain the same bytes? Doesn't work if either is\n * in object mode.\n *\n * @param {NoFilter} other Other NoFilter to compare against.\n * @returns {boolean} Equal?\n */\n equals(other) {\n return this.compare(other) === 0\n }\n\n /**\n * Read bytes or objects without consuming them. Useful for diagnostics.\n * Note: as a side-effect, concatenates multiple writes together into what\n * looks like a single write, so that this concat doesn't have to happen\n * multiple times when you're futzing with the same NoFilter.\n *\n * @param {number} [start=0] Beginning offset.\n * @param {number} [end=length] Ending offset.\n * @returns {Buffer|Array} If in object mode, an array of objects. Otherwise,\n * concatenated array of contents.\n */\n slice(start, end) {\n // @ts-ignore: TS2339 (using internal interface)\n if (this._readableState.objectMode) {\n return this._bufArray().slice(start, end)\n }\n const bufs = this._bufArray()\n switch (bufs.length) {\n case 0: return Buffer.alloc(0)\n case 1: return bufs[0].slice(start, end)\n default: {\n const b = Buffer.concat(bufs)\n // TODO: store the concatented bufs back\n // @_readableState.buffer = [b]\n return b.slice(start, end)\n }\n }\n }\n\n /**\n * Get a byte by offset. I didn't want to get into metaprogramming\n * to give you the `NoFilter[0]` syntax.\n *\n * @param {number} index The byte to retrieve.\n * @returns {number} 0-255.\n */\n get(index) {\n return this.slice()[index]\n }\n\n /**\n * Return an object compatible with Buffer's toJSON implementation, so that\n * round-tripping will produce a Buffer.\n *\n * @returns {string|Array|{type: 'Buffer',data: number[]}} If in object mode,\n * the objects. Otherwise, JSON text.\n * @example <caption>output for 'foo', not in object mode</caption>\n * ({\n * type: 'Buffer',\n * data: [102, 111, 111],\n * })\n */\n toJSON() {\n const b = this.slice()\n if (Buffer.isBuffer(b)) {\n return b.toJSON()\n }\n return b\n }\n\n /**\n * Decodes and returns a string from buffer data encoded using the specified\n * character set encoding. If encoding is undefined or null, then encoding\n * defaults to 'utf8'. The start and end parameters default to 0 and\n * NoFilter.length when undefined.\n *\n * @param {BufferEncoding} [encoding='utf8'] Which to use for decoding?\n * @param {number} [start=0] Start offset.\n * @param {number} [end=length] End offset.\n * @returns {string} String version of the contents.\n */\n toString(encoding, start, end) {\n const buf = this.slice(start, end)\n if (!Buffer.isBuffer(buf)) {\n return JSON.stringify(buf)\n }\n if (!encoding || (encoding === 'utf8')) {\n return td.decode(buf)\n }\n return buf.toString(encoding)\n }\n\n /**\n * @ignore\n */\n [Symbol.for('nodejs.util.inspect.custom')](depth, options) {\n const bufs = this._bufArray()\n const hex = bufs.map(b => {\n if (Buffer.isBuffer(b)) {\n return options.stylize(b.toString('hex'), 'string')\n }\n return JSON.stringify(b)\n }).join(', ')\n return `${this.constructor.name} [${hex}]`\n }\n\n /**\n * Current readable length, in bytes.\n *\n * @returns {number} Length of the contents.\n */\n get length() {\n // @ts-ignore: TS2339 (using internal interface)\n return this._readableState.length\n }\n\n /**\n * Write a JavaScript BigInt to the stream. Negative numbers will be\n * written as their 2's complement version.\n *\n * @param {bigint} val The value to write.\n * @returns {boolean} True on success.\n */\n writeBigInt(val) {\n let str = val.toString(16)\n if (val < 0) {\n // Two's complement\n // Note: str always starts with '-' here.\n const sz = BigInt(Math.floor(str.length / 2))\n const mask = BigInt(1) << (sz * BigInt(8))\n val = mask + val\n str = val.toString(16)\n }\n if (str.length % 2) {\n str = `0${str}`\n }\n return this.push(Buffer.from(str, 'hex'))\n }\n\n /**\n * Read a variable-sized JavaScript unsigned BigInt from the stream.\n *\n * @param {number} [len=null] Number of bytes to read or all remaining\n * if null.\n * @returns {bigint} A BigInt.\n */\n readUBigInt(len) {\n const b = this.read(len)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return BigInt(`0x${b.toString('hex')}`)\n }\n\n /**\n * Read a variable-sized JavaScript signed BigInt from the stream in 2's\n * complement format.\n *\n * @param {number} [len=null] Number of bytes to read or all remaining\n * if null.\n * @returns {bigint} A BigInt.\n */\n readBigInt(len) {\n const b = this.read(len)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n let ret = BigInt(`0x${b.toString('hex')}`)\n // Negative?\n if (b[0] & 0x80) {\n // Two's complement\n const mask = BigInt(1) << (BigInt(b.length) * BigInt(8))\n ret -= mask\n }\n return ret\n }\n\n /**\n * Write an 8-bit unsigned integer to the stream. Adds 1 byte.\n *\n * @param {number} value 0..255.\n * @returns {boolean} True on success.\n */\n writeUInt8(value) {\n const b = Buffer.from([value])\n return this.push(b)\n }\n\n /**\n * Write a little-endian 16-bit unsigned integer to the stream. Adds\n * 2 bytes.\n *\n * @param {number} value 0..65535.\n * @returns {boolean} True on success.\n */\n writeUInt16LE(value) {\n const b = Buffer.alloc(2)\n b.writeUInt16LE(value)\n return this.push(b)\n }\n\n /**\n * Write a big-endian 16-bit unsigned integer to the stream. Adds\n * 2 bytes.\n *\n * @param {number} value 0..65535.\n * @returns {boolean} True on success.\n */\n writeUInt16BE(value) {\n const b = Buffer.alloc(2)\n b.writeUInt16BE(value)\n return this.push(b)\n }\n\n /**\n * Write a little-endian 32-bit unsigned integer to the stream. Adds\n * 4 bytes.\n *\n * @param {number} value 0..2**32-1.\n * @returns {boolean} True on success.\n */\n writeUInt32LE(value) {\n const b = Buffer.alloc(4)\n b.writeUInt32LE(value)\n return this.push(b)\n }\n\n /**\n * Write a big-endian 32-bit unsigned integer to the stream. Adds\n * 4 bytes.\n *\n * @param {number} value 0..2**32-1.\n * @returns {boolean} True on success.\n */\n writeUInt32BE(value) {\n const b = Buffer.alloc(4)\n b.writeUInt32BE(value)\n return this.push(b)\n }\n\n /**\n * Write a signed 8-bit integer to the stream. Adds 1 byte.\n *\n * @param {number} value (-128)..127.\n * @returns {boolean} True on success.\n */\n writeInt8(value) {\n const b = Buffer.from([value])\n return this.push(b)\n }\n\n /**\n * Write a signed little-endian 16-bit integer to the stream. Adds 2 bytes.\n *\n * @param {number} value (-32768)..32767.\n * @returns {boolean} True on success.\n */\n writeInt16LE(value) {\n const b = Buffer.alloc(2)\n b.writeUInt16LE(value)\n return this.push(b)\n }\n\n /**\n * Write a signed big-endian 16-bit integer to the stream. Adds 2 bytes.\n *\n * @param {number} value (-32768)..32767.\n * @returns {boolean} True on success.\n */\n writeInt16BE(value) {\n const b = Buffer.alloc(2)\n b.writeUInt16BE(value)\n return this.push(b)\n }\n\n /**\n * Write a signed little-endian 32-bit integer to the stream. Adds 4 bytes.\n *\n * @param {number} value (-2**31)..(2**31-1).\n * @returns {boolean} True on success.\n */\n writeInt32LE(value) {\n const b = Buffer.alloc(4)\n b.writeUInt32LE(value)\n return this.push(b)\n }\n\n /**\n * Write a signed big-endian 32-bit integer to the stream. Adds 4 bytes.\n *\n * @param {number} value (-2**31)..(2**31-1).\n * @returns {boolean} True on success.\n */\n writeInt32BE(value) {\n const b = Buffer.alloc(4)\n b.writeUInt32BE(value)\n return this.push(b)\n }\n\n /**\n * Write a little-endian 32-bit float to the stream. Adds 4 bytes.\n *\n * @param {number} value 32-bit float.\n * @returns {boolean} True on success.\n */\n writeFloatLE(value) {\n const b = Buffer.alloc(4)\n b.writeFloatLE(value)\n return this.push(b)\n }\n\n /**\n * Write a big-endian 32-bit float to the stream. Adds 4 bytes.\n *\n * @param {number} value 32-bit float.\n * @returns {boolean} True on success.\n */\n writeFloatBE(value) {\n const b = Buffer.alloc(4)\n b.writeFloatBE(value)\n return this.push(b)\n }\n\n /**\n * Write a little-endian 64-bit double to the stream. Adds 8 bytes.\n *\n * @param {number} value 64-bit float.\n * @returns {boolean} True on success.\n */\n writeDoubleLE(value) {\n const b = Buffer.alloc(8)\n b.writeDoubleLE(value)\n return this.push(b)\n }\n\n /**\n * Write a big-endian 64-bit float to the stream. Adds 8 bytes.\n *\n * @param {number} value 64-bit float.\n * @returns {boolean} True on success.\n */\n writeDoubleBE(value) {\n const b = Buffer.alloc(8)\n b.writeDoubleBE(value)\n return this.push(b)\n }\n\n /**\n * Write a signed little-endian 64-bit BigInt to the stream. Adds 8 bytes.\n *\n * @param {bigint} value BigInt.\n * @returns {boolean} True on success.\n */\n writeBigInt64LE(value) {\n const b = Buffer.alloc(8)\n b.writeBigInt64LE(value)\n return this.push(b)\n }\n\n /**\n * Write a signed big-endian 64-bit BigInt to the stream. Adds 8 bytes.\n *\n * @param {bigint} value BigInt.\n * @returns {boolean} True on success.\n */\n writeBigInt64BE(value) {\n const b = Buffer.alloc(8)\n b.writeBigInt64BE(value)\n return this.push(b)\n }\n\n /**\n * Write an unsigned little-endian 64-bit BigInt to the stream. Adds 8 bytes.\n *\n * @param {bigint} value Non-negative BigInt.\n * @returns {boolean} True on success.\n */\n writeBigUInt64LE(value) {\n const b = Buffer.alloc(8)\n b.writeBigUInt64LE(value)\n return this.push(b)\n }\n\n /**\n * Write an unsigned big-endian 64-bit BigInt to the stream. Adds 8 bytes.\n *\n * @param {bigint} value Non-negative BigInt.\n * @returns {boolean} True on success.\n */\n writeBigUInt64BE(value) {\n const b = Buffer.alloc(8)\n b.writeBigUInt64BE(value)\n return this.push(b)\n }\n\n /**\n * Read an unsigned 8-bit integer from the stream. Consumes 1 byte.\n *\n * @returns {number} Value read.\n */\n readUInt8() {\n const b = this.read(1)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readUInt8()\n }\n\n /**\n * Read a little-endian unsigned 16-bit integer from the stream.\n * Consumes 2 bytes.\n *\n * @returns {number} Value read.\n */\n readUInt16LE() {\n const b = this.read(2)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readUInt16LE()\n }\n\n /**\n * Read a little-endian unsigned 16-bit integer from the stream.\n * Consumes 2 bytes.\n *\n * @returns {number} Value read.\n */\n readUInt16BE() {\n const b = this.read(2)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readUInt16BE()\n }\n\n /**\n * Read a little-endian unsigned 32-bit integer from the stream.\n * Consumes 4 bytes.\n *\n * @returns {number} Value read.\n */\n readUInt32LE() {\n const b = this.read(4)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readUInt32LE()\n }\n\n /**\n * Read a little-endian unsigned 16-bit integer from the stream.\n * Consumes 4 bytes.\n *\n * @returns {number} Value read.\n */\n readUInt32BE() {\n const b = this.read(4)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readUInt32BE()\n }\n\n /**\n * Read a signed 8-bit integer from the stream. Consumes 1 byte.\n *\n * @returns {number} Value read.\n */\n readInt8() {\n const b = this.read(1)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readInt8()\n }\n\n /**\n * Read a little-endian signed 16-bit integer from the stream.\n * Consumes 2 bytes.\n *\n * @returns {number} Value read.\n */\n readInt16LE() {\n const b = this.read(2)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readInt16LE()\n }\n\n /**\n * Read a little-endian signed 16-bit integer from the stream.\n * Consumes 2 bytes.\n *\n * @returns {number} Value read.\n */\n readInt16BE() {\n const b = this.read(2)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readInt16BE()\n }\n\n /**\n * Read a little-endian signed 32-bit integer from the stream.\n * Consumes 4 bytes.\n *\n * @returns {number} Value read.\n */\n readInt32LE() {\n const b = this.read(4)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readInt32LE()\n }\n\n /**\n * Read a little-endian signed 16-bit integer from the stream.\n * Consumes 4 bytes.\n *\n * @returns {number} Value read.\n */\n readInt32BE() {\n const b = this.read(4)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readInt32BE()\n }\n\n /**\n * Read a 32-bit little-endian float from the stream.\n * Consumes 4 bytes.\n *\n * @returns {number} Value read.\n */\n readFloatLE() {\n const b = this.read(4)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readFloatLE()\n }\n\n /**\n * Read a 32-bit big-endian float from the stream.\n * Consumes 4 bytes.\n *\n * @returns {number} Value read.\n */\n readFloatBE() {\n const b = this.read(4)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readFloatBE()\n }\n\n /**\n * Read a 64-bit little-endian float from the stream.\n * Consumes 8 bytes.\n *\n * @returns {number} Value read.\n */\n readDoubleLE() {\n const b = this.read(8)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readDoubleLE()\n }\n\n /**\n * Read a 64-bit big-endian float from the stream.\n * Consumes 8 bytes.\n *\n * @returns {number} Value read.\n */\n readDoubleBE() {\n const b = this.read(8)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readDoubleBE()\n }\n\n /**\n * Read a signed 64-bit little-endian BigInt from the stream.\n * Consumes 8 bytes.\n *\n * @returns {bigint} Value read.\n */\n readBigInt64LE() {\n const b = this.read(8)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readBigInt64LE()\n }\n\n /**\n * Read a signed 64-bit big-endian BigInt from the stream.\n * Consumes 8 bytes.\n *\n * @returns {bigint} Value read.\n */\n readBigInt64BE() {\n const b = this.read(8)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readBigInt64BE()\n }\n\n /**\n * Read an unsigned 64-bit little-endian BigInt from the stream.\n * Consumes 8 bytes.\n *\n * @returns {bigint} Value read.\n */\n readBigUInt64LE() {\n const b = this.read(8)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readBigUInt64LE()\n }\n\n /**\n * Read an unsigned 64-bit big-endian BigInt from the stream.\n * Consumes 8 bytes.\n *\n * @returns {bigint} Value read.\n */\n readBigUInt64BE() {\n const b = this.read(8)\n if (!Buffer.isBuffer(b)) {\n return null\n }\n return b.readBigUInt64BE()\n }\n}\n\nmodule.exports = NoFilter\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","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '<'; break;\n case '>': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\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 duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\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;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\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\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\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') return emitter.prependListener(event, fn);\n\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 (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\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 if (isDuplex) 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 this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\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 this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\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 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}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(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});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\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 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 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};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\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 errorOrDestroy(stream, 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 if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\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 maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\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 if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\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 var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\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 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.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || 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 = 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 var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\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 if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\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 if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\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 debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\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 process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\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 errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\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 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\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 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 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 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 src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\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', state.awaitDrain);\n state.awaitDrain++;\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) errorOrDestroy(dest, 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 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 return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\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}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\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 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 for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\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 state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\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 var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\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 // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\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 _this = this;\n var state = this._readableState;\n var paused = false;\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) _this.push(chunk);\n }\n _this.push(null);\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 var ret = _this.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 methodWrap(method) {\n return function methodWrapReturnFunction() {\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], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\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 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.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\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 if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\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}","// 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;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\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 if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\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.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\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 cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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 if (ts.writechunk !== null && !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};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\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\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 this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\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\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) 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 this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\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 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 // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\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}\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(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\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 value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\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\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(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 er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) 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 return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\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 ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\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}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\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 state.length += len;\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 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 return ret;\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 (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, 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 errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\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) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\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 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 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 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 state.bufferedRequestCount = 0;\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 doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\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 if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\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 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) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\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 errorOrDestroy(stream, 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' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\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 if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\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\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(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});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: 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 key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\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 // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.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) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.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) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\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 this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\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 if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\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\nSafeBuffer.prototype = Object.create(Buffer.prototype)\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","// 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/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.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","// 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}","\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","/* (ignored) */","/* (ignored) */","/*passwordless-id/webauthn@2.1.2*/\nvar v=Object.defineProperty;var y=(e,t)=>{for(var a in t)v(e,a,{get:t[a],enumerable:!0})};var w={};y(w,{authenticate:()=>Y,isAutocompleteAvailable:()=>B,isAvailable:()=>H,isLocalAuthenticator:()=>V,register:()=>L});var u={};y(u,{bufferToHex:()=>C,concatenateBuffers:()=>O,isBase64url:()=>g,parseBase64url:()=>o,parseBuffer:()=>K,sha256:()=>A,toBase64url:()=>n,toBuffer:()=>f});function f(e){return Uint8Array.from(e,t=>t.charCodeAt(0)).buffer}function K(e){return String.fromCharCode(...new Uint8Array(e))}function g(e){return e.match(/^[a-zA-Z0-9\\-_]+=*$/)!==null}function n(e){return btoa(K(e)).replaceAll(\"+\",\"-\").replaceAll(\"/\",\"_\")}function o(e){return e=e.replaceAll(\"-\",\"+\").replaceAll(\"_\",\"/\"),f(atob(e))}async function A(e){return await crypto.subtle.digest(\"SHA-256\",e)}function C(e){return[...new Uint8Array(e)].map(t=>t.toString(16).padStart(2,\"0\")).join(\"\")}function O(e,t){var a=new Uint8Array(e.byteLength+t.byteLength);return a.set(new Uint8Array(e),0),a.set(new Uint8Array(t),e.byteLength),a}function H(){return!!window.PublicKeyCredential}async function V(){return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}function k(e){if(!(!e||e.length===0))return e.includes(\"client-device\")?e.includes(\"security-key\")||e.includes(\"hybrid\")?void 0:\"platform\":\"cross-platform\"}var s=null;async function L(e){if(!e.challenge)throw new Error('\"challenge\" required');if(!e.user)throw new Error('\"user\" required');if(!g(e.challenge))throw new Error(\"Provided challenge is not properly encoded in Base64url\");let t=typeof e.user==\"string\"?{name:e.user}:e.user;t.id||(t.id=crypto.randomUUID());let a={challenge:o(e.challenge),rp:{id:e.domain??window.location.hostname,name:e.domain??window.location.hostname},user:{id:f(t.id),name:t.name,displayName:t.displayName??t.name},hints:e.hints,pubKeyCredParams:[{alg:-7,type:\"public-key\"},{alg:-257,type:\"public-key\"}],timeout:e.timeout,authenticatorSelection:{userVerification:e.userVerification,authenticatorAttachment:k(e.hints),residentKey:e.discoverable??\"preferred\",requireResidentKey:e.discoverable===\"required\"},attestation:\"direct\"};console.debug(a),s?.abort(\"Cancel ongoing authentication\"),s=new AbortController;let r=await navigator.credentials.create({publicKey:a,signal:s?.signal}),i=r.response;if(s=null,console.debug(r),r.type!=\"public-key\")throw\"Unexpected credential type!\";let c=i.getPublicKey();if(!c)throw\"Non-compliant browser or authenticator!\";return{type:r.type,id:r.id,rawId:n(r.rawId),authenticatorAttachment:r.authenticatorAttachment,clientExtensionResults:r.getClientExtensionResults(),response:{attestationObject:n(i.attestationObject),authenticatorData:n(i.getAuthenticatorData()),clientDataJSON:n(i.clientDataJSON),publicKey:n(c),publicKeyAlgorithm:i.getPublicKeyAlgorithm(),transports:i.getTransports()},user:t}}async function B(){return PublicKeyCredential.isConditionalMediationAvailable&&PublicKeyCredential.isConditionalMediationAvailable()}async function Y(e){if(!g(e.challenge))throw new Error(\"Provided challenge is not properly encoded in Base64url\");if(e.autocomplete&&!await B())throw new Error(\"PAsskeys autocomplete with conditional mediation is not available in this browser.\");let t={challenge:o(e.challenge),rpId:e.domain??window.location.hostname,allowCredentials:e.allowCredentials?.map(M),hints:e.hints,userVerification:e.userVerification,timeout:e.timeout};console.debug(t),s?.abort(\"Cancel ongoing authentication\"),e.autocomplete&&(s=new AbortController);let a=await navigator.credentials.get({publicKey:t,mediation:e.autocomplete?\"conditional\":void 0,signal:s?.signal});if(a.type!=\"public-key\")throw\"Unexpected credential type!\";s=null,console.debug(a);let r=a.response;return{clientExtensionResults:a.getClientExtensionResults(),id:a.id,rawId:n(a.rawId),type:a.type,authenticatorAttachment:a.authenticatorAttachment,response:{authenticatorData:n(r.authenticatorData),clientDataJSON:n(r.clientDataJSON),signature:n(r.signature),userHandle:r.userHandle?n(r.userHandle):void 0}}}function M(e){return typeof e==\"string\"?{id:o(e),type:\"public-key\"}:{id:o(e.id),type:\"public-key\",transports:e.transports}}var F={};y(F,{parseCryptoKey:()=>R,randomChallenge:()=>J,verifyAuthentication:()=>q,verifyRegistration:()=>_,verifySignature:()=>U});var l={};y(l,{getAlgoName:()=>E,parseAuthentication:()=>j,parseAuthenticator:()=>b,parseClient:()=>S,parseRegistration:()=>z,toAuthenticationInfo:()=>I,toRegistrationInfo:()=>N});var p={\"00000000-0000-0000-0000-000000000000\":\"Unknown authenticator\",\"0076631b-d4a0-427f-5773-0ec71c9e0279\":\"HYPR FIDO2 Authenticator\",\"07a9f89c-6407-4594-9d56-621d5f1e358b\":\"NXP Semiconductros FIDO2 Conformance Testing CTAP2 Authenticator\",\"08987058-cadc-4b81-b6e1-30de50dcbe96\":\"Windows Hello\",\"092277e5-8437-46b5-b911-ea64b294acb7\":\"Taglio CTAP2.1 CS\",\"09591fc6-9811-48f7-8f57-b9f23df6413f\":\"Pone Biometrics OFFPAD Authenticator\",\"0acf3011-bc60-f375-fb53-6f05f43154e0\":\"Nymi FIDO2 Authenticator\",\"0bb43545-fd2c-4185-87dd-feb0b2916ace\":\"Security Key NFC by Yubico - Enterprise Edition\",\"0d9b2e56-566b-c393-2940-f821b7f15d6d\":\"Excelsecu eSecu FIDO2 Pro Security Key\",\"0ea242b4-43c4-4a1b-8b17-dd6d0b6baec6\":\"Keeper\",\"1105e4ed-af1d-02ff-ffff-ffffffffffff\":\"Egomet FIDO2 Authenticator for Android\",\"12ded745-4bed-47d4-abaa-e713f51d6393\":\"Feitian AllinOne FIDO2 Authenticator\",\"149a2021-8ef6-4133-96b8-81f8d5b7f1f5\":\"Security Key by Yubico with NFC\",\"17290f1e-c212-34d0-1423-365d729f09d9\":\"Thales PIN iOS SDK\",\"175cd298-83d2-4a26-b637-313c07a6434e\":\"Chunghwa Telecom FIDO2 Smart Card Authenticator\",\"19083c3d-8383-4b18-bc03-8f1c9ab2fd1b\":\"YubiKey 5 Series\",\"1c086528-58d5-f211-823c-356786e36140\":\"Atos CardOS FIDO2\",\"20f0be98-9af9-986a-4b42-8eca4acb28e4\":\"Excelsecu eSecu FIDO2 Fingerprint Security Key\",\"2194b428-9397-4046-8f39-007a1605a482\":\"IDPrime 931 Fido\",\"234cd403-35a2-4cc2-8015-77ea280c77f5\":\"Feitian ePass FIDO2-NFC Series (CTAP2.1, CTAP2.0, U2F)\",\"23786452-f02d-4344-87ed-aaf703726881\":\"SafeNet eToken Fusion CC\",\"2772ce93-eb4b-4090-8b73-330f48477d73\":\"Security Key NFC by Yubico - Enterprise Edition Preview\",\"2c0df832-92de-4be1-8412-88a8f074df4a\":\"Feitian FIDO Smart Card\",\"2d3bec26-15ee-4f5d-88b2-53622490270b\":\"HID Crescendo Key V2\",\"2fc0579f-8113-47ea-b116-bb5a8db9202a\":\"YubiKey 5 Series with NFC\",\"2ffd6452-01da-471f-821b-ea4bf6c8676a\":\"IDPrime 941 Fido\",\"30b5035e-d297-4fc1-b00b-addc96ba6a97\":\"OneSpan FIDO Touch\",\"30b5035e-d297-4ff1-b00b-addc96ba6a98\":\"OneSpan DIGIPASS FX1 BIO\",\"3124e301-f14e-4e38-876d-fbeeb090e7bf\":\"YubiKey 5 Series with Lightning Preview\",\"31c3f7ff-bf15-4327-83ec-9336abcbcd34\":\"WinMagic FIDO Eazy - Software\",\"341e4da9-3c2e-8103-5a9f-aad887135200\":\"Ledger Nano S FIDO2 Authenticator\",\"34f5766d-1536-4a24-9033-0e294e510fb0\":\"YubiKey 5 Series with NFC Preview\",\"361a3082-0278-4583-a16f-72a527f973e4\":\"eWBM eFA500 FIDO2 Authenticator\",\"3789da91-f943-46bc-95c3-50ea2012f03a\":\"NEOWAVE Winkeo FIDO2\",\"39a5647e-1853-446c-a1f6-a79bae9f5bc7\":\"IDmelon\",\"3b1adb99-0dfe-46fd-90b8-7f7614a4de2a\":\"GoTrust Idem Key FIDO2 Authenticator\",\"3e078ffd-4c54-4586-8baa-a77da113aec5\":\"Hideez Key 3 FIDO2\",\"3e22415d-7fdf-4ea4-8a0c-dd60c4249b9d\":\"Feitian iePass FIDO Authenticator\",\"3f59672f-20aa-4afe-b6f4-7e5e916b6d98\":\"Arculus FIDO 2.1 Key Card [P71]\",\"42b4fb4a-2866-43b2-9bf7-6c6669c2e5d3\":\"Google Titan Security Key v2\",\"454e5346-4944-4ffd-6c93-8e9267193e9a\":\"Ensurity ThinC\",\"454e5346-4944-4ffd-6c93-8e9267193e9b\":\"Ensurity AUTH BioPro\",\"47ab2fb4-66ac-4184-9ae1-86be814012d5\":\"Security Key NFC by Yubico - Enterprise Edition\",\"4b3f8944-d4f2-4d21-bb19-764a986ec160\":\"KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator\",\"4c0cf95d-2f40-43b5-ba42-4c83a11c04ba\":\"Feitian BioPass FIDO2 Pro Authenticator\",\"4c50ff10-1057-4fc6-b8ed-43a529530c3c\":\"ImproveID Authenticator\",\"4d41190c-7beb-4a84-8018-adf265a6352d\":\"Thales IDPrime FIDO Bio\",\"4e768f2c-5fab-48b3-b300-220eb487752b\":\"Hideez Key 4 FIDO2 SDK\",\"504d7149-4e4c-3841-4555-55445a677357\":\"WiSECURE AuthTron USB FIDO2 Authenticator\",\"50726f74-6f6e-5061-7373-50726f746f6e\":\"Proton Pass\",\"50a45b0c-80e7-f944-bf29-f552bfa2e048\":\"ACS FIDO Authenticator\",\"516d3969-5a57-5651-5958-4e7a49434167\":\"SmartDisplayer BobeePass FIDO2 Authenticator\",\"531126d6-e717-415c-9320-3d9aa6981239\":\"Dashlane\",\"53414d53-554e-4700-0000-000000000000\":\"Samsung Pass\",\"5343502d-5343-5343-6172-644649444f32\":\"ESS Smart Card Inc. Authenticator\",\"54d9fee8-e621-4291-8b18-7157b99c5bec\":\"HID Crescendo Enabled\",\"5626bed4-e756-430b-a7ff-ca78c8b12738\":\"VALMIDO PRO FIDO\",\"58b44d0b-0a7c-f33a-fd48-f7153c871352\":\"Ledger Nano S Plus FIDO2 Authenticator\",\"5b0e46ba-db02-44ac-b979-ca9b84f5e335\":\"YubiKey 5 FIPS Series with Lightning Preview\",\"5ca1ab1e-1337-fa57-f1d0-a117e71ca702\":\"Allthenticator App: roaming BLE FIDO2 Allthenticator for Windows, Mac, Linux, and Allthenticate door readers\",\"5d629218-d3a5-11ed-afa1-0242ac120002\":\"Swissbit iShield Key Pro\",\"5fdb81b8-53f0-4967-a881-f5ec26fe4d18\":\"VinCSS FIDO2 Authenticator\",\"6002f033-3c07-ce3e-d0f7-0ffe5ed42543\":\"Excelsecu eSecu FIDO2 Fingerprint Key\",\"6028b017-b1d4-4c02-b4b3-afcdafc96bb2\":\"Windows Hello\",\"61250591-b2bc-4456-b719-0b17be90bb30\":\"eWBM eFPA FIDO2 Authenticator\",\"62e54e98-c209-4df3-b692-de71bb6a8528\":\"YubiKey 5 FIPS Series with NFC Preview\",\"664d9f67-84a2-412a-9ff7-b4f7d8ee6d05\":\"OpenSK authenticator\",\"66a0ccb3-bd6a-191f-ee06-e375c50b9846\":\"Thales Bio iOS SDK\",\"692db549-7ae5-44d5-a1e5-dd20a493b723\":\"HID Crescendo Key\",\"69700f79-d1fb-472e-bd9b-a3a3b9a9eda0\":\"Pone Biometrics OFFPAD Authenticator\",\"6d44ba9b-f6ec-2e49-b930-0c8fe920cb73\":\"Security Key by Yubico with NFC\",\"6dae43be-af9c-417b-8b9f-1b611168ec60\":\"Dapple Authenticator from Dapple Security Inc.\",\"73402251-f2a8-4f03-873e-3cb6db604b03\":\"uTrust FIDO2 Security Key\",\"73bb0cd4-e502-49b8-9c6f-b59445bf720b\":\"YubiKey 5 FIPS Series\",\"74820b05-a6c9-40f9-8fb0-9f86aca93998\":\"SafeNet eToken Fusion\",\"760eda36-00aa-4d29-855b-4012a182cdeb\":\"Security Key NFC by Yubico Preview\",\"77010bd7-212a-4fc9-b236-d2ca5e9d4084\":\"Feitian BioPass FIDO2 Authenticator\",\"771b48fd-d3d4-4f74-9232-fc157ab0507a\":\"Edge on Mac\",\"7d1351a6-e097-4852-b8bf-c9ac5c9ce4a3\":\"YubiKey Bio Series - Multi-protocol Edition\",\"7d2afadd-bf6b-44a2-a66b-e831fceb8eff\":\"Taglio CTAP2.1 EP\",\"7e3f3d30-3557-4442-bdae-139312178b39\":\"RSA DS100\",\"820d89ed-d65a-409e-85cb-f73f0578f82a\":\"IDmelon iOS Authenticator\",\"833b721a-ff5f-4d00-bb2e-bdda3ec01e29\":\"Feitian ePass FIDO2 Authenticator\",\"83c47309-aabb-4108-8470-8be838b573cb\":\"YubiKey Bio Series (Enterprise Profile)\",\"85203421-48f9-4355-9bc8-8a53846e5083\":\"YubiKey 5 FIPS Series with Lightning\",\"87dbc5a1-4c94-4dc8-8a47-97d800fd1f3c\":\"eWBM eFA320 FIDO2 Authenticator\",\"8836336a-f590-0921-301d-46427531eee6\":\"Thales Bio Android SDK\",\"8876631b-d4a0-427f-5773-0ec71c9e0279\":\"Solo Secp256R1 FIDO2 CTAP2 Authenticator\",\"88bbd2f0-342a-42e7-9729-dd158be5407a\":\"Precision InnaIT Key FIDO 2 Level 2 certified\",\"891494da-2c90-4d31-a9cd-4eab0aed1309\":\"S\\xE9same\",\"8976631b-d4a0-427f-5773-0ec71c9e0279\":\"Solo Tap Secp256R1 FIDO2 CTAP2 Authenticator\",\"89b19028-256b-4025-8872-255358d950e4\":\"Sentry Enterprises CTAP2 Authenticator\",\"8c97a730-3f7b-41a6-87d6-1e9b62bda6f0\":\"FT-JCOS FIDO Fingerprint Card\",\"8d1b1fcb-3c76-49a9-9129-5515b346aa02\":\"IDEMIA ID-ONE Card\",\"91ad6b93-264b-4987-8737-3a690cad6917\":\"Token Ring FIDO2 Authenticator\",\"931327dd-c89b-406c-a81e-ed7058ef36c6\":\"Swissbit iShield Key FIDO2\",\"95442b2e-f15e-4def-b270-efb106facb4e\":\"eWBM eFA310 FIDO2 Authenticator\",\"95e4d58c-056e-4a65-866d-f5a69659e880\":\"TruU Windows Authenticator\",\"970c8d9c-19d2-46af-aa32-3f448db49e35\":\"WinMagic FIDO Eazy - TPM\",\"973446ca-e21c-9a9b-99f5-9b985a67af0f\":\"ACS FIDO Authenticator Card\",\"9876631b-d4a0-427f-5773-0ec71c9e0279\":\"Somu Secp256R1 FIDO2 CTAP2 Authenticator\",\"998f358b-2dd2-4cbe-a43a-e8107438dfb3\":\"OnlyKey Secp256R1 FIDO2 CTAP2 Authenticator\",\"99bf4610-ec26-4252-b31f-7380ccd59db5\":\"ZTPass Card\",\"9c835346-796b-4c27-8898-d6032f515cc5\":\"Cryptnox FIDO2\",\"9d3df6ba-282f-11ed-a261-0242ac120002\":\"Arculus FIDO2/U2F Key Card\",\"9ddd1817-af5a-4672-a2b9-3e3dd95000a9\":\"Windows Hello\",\"9f0d8150-baa5-4c00-9299-ad62c8bb4e87\":\"GoTrust Idem Card FIDO2 Authenticator\",\"9f77e279-a6e2-4d58-b700-31e5943c6a98\":\"Hyper FIDO Pro\",\"a02167b9-ae71-4ac7-9a07-06432ebb6f1c\":\"YubiKey 5 Series with Lightning\",\"a1f52be5-dfab-4364-b51c-2bd496b14a56\":\"OCTATCO EzFinger2 FIDO2 AUTHENTICATOR\",\"a25342c0-3cdc-4414-8e46-f4807fca511c\":\"YubiKey 5 Series with NFC\",\"a3975549-b191-fd67-b8fb-017e2917fdb3\":\"Excelsecu eSecu FIDO2 NFC Security Key\",\"a4e9fc6d-4cbe-4758-b8ba-37598bb5bbaa\":\"Security Key NFC by Yubico\",\"ab32f0c6-2239-afbb-c470-d2ef4e254db6\":\"TEST (DUMMY RECORD)\",\"ab32f0c6-2239-afbb-c470-d2ef4e254db7\":\"TOKEN2 FIDO2 Security Key\",\"adce0002-35bc-c60a-648b-0b25f1f05503\":\"Chrome on Mac\",\"aeb6569c-f8fb-4950-ac60-24ca2bbe2e52\":\"HID Crescendo C2300\",\"b267239b-954f-4041-a01b-ee4f33c145b6\":\"authenton1 - CTAP2.1\",\"b50d5e0a-7f81-4959-9b12-f45407407503\":\"IDPrime 3940 FIDO\",\"b5397666-4885-aa6b-cebf-e52262a439a2\":\"Chromium Browser\",\"b6ede29c-3772-412c-8a78-539c1f4c62d2\":\"Feitian BioPass FIDO2 Plus Authenticator\",\"b84e4048-15dc-4dd0-8640-f4f60813c8af\":\"NordPass\",\"b92c3f9a-c014-4056-887f-140a2501163b\":\"Security Key by Yubico\",\"b93fd961-f2e6-462f-b122-82002247de78\":\"Android Authenticator with SafetyNet Attestation\",\"ba76a271-6eb6-4171-874d-b6428dbe3437\":\"ATKey.ProS\",\"ba86dc56-635f-4141-aef6-00227b1b9af6\":\"TruU Windows Authenticator\",\"bada5566-a7aa-401f-bd96-45619a55120d\":\"1Password\",\"bbf4b6a7-679d-f6fc-c4f2-8ac0ddf9015a\":\"Excelsecu eSecu FIDO2 PRO Security Key\",\"bc2fe499-0d8e-4ffe-96f3-94a82840cf8c\":\"OCTATCO EzQuant FIDO2 AUTHENTICATOR\",\"be727034-574a-f799-5c76-0929e0430973\":\"Crayonic KeyVault K1 (USB-NFC-BLE FIDO2 Authenticator)\",\"c1f9a0bc-1dd2-404a-b27f-8e29047a43fd\":\"YubiKey 5 FIPS Series with NFC\",\"c5703116-972b-4851-a3e7-ae1259843399\":\"NEOWAVE Badgeo FIDO2\",\"c5ef55ff-ad9a-4b9f-b580-adebafe026d0\":\"YubiKey 5 Series with Lightning\",\"c80dbd9a-533f-4a17-b941-1a2f1c7cedff\":\"HID Crescendo C3000\",\"ca4cff1b-5a81-4404-8194-59aabcf1660b\":\"IDPrime 3930 FIDO\",\"ca87cb70-4c1b-4579-a8e8-4efdd7c007e0\":\"FIDO Alliance TruU Sample FIDO2 Authenticator\",\"cb69481e-8ff7-4039-93ec-0a2729a154a8\":\"YubiKey 5 Series\",\"cc45f64e-52a2-451b-831a-4edd8022a202\":\"ToothPic Passkey Provider\",\"cd69adb5-3c7a-deb9-3177-6800ea6cb72a\":\"Thales PIN Android SDK\",\"cdbdaea2-c415-5073-50f7-c04e968640b6\":\"Excelsecu eSecu FIDO2 Security Key\",\"cfcb13a2-244f-4b36-9077-82b79d6a7de7\":\"USB/NFC Passcode Authenticator\",\"d384db22-4d50-ebde-2eac-5765cf1e2a44\":\"Excelsecu eSecu FIDO2 Fingerprint Security Key\",\"d41f5a69-b817-4144-a13c-9ebd6d9254d6\":\"ATKey.Card CTAP2.0\",\"d548826e-79b4-db40-a3d8-11116f7e8349\":\"Bitwarden\",\"d61d3b87-3e7c-4aea-9c50-441c371903ad\":\"KeyVault Secp256R1 FIDO2 CTAP2 Authenticator\",\"d7a423ad-3e19-4492-9200-78137dccc136\":\"VivoKey Apex FIDO2\",\"d821a7d4-e97c-4cb6-bd82-4237731fd4be\":\"Hyper FIDO Bio Security Key\",\"d8522d9f-575b-4866-88a9-ba99fa02f35b\":\"YubiKey Bio Series\",\"d91c5288-0ef0-49b7-b8ae-21ca0aa6b3f3\":\"KEY-ID FIDO2 Authenticator\",\"d94a29d9-52dd-4247-9c2d-8b818b610389\":\"VeriMark Guard Fingerprint Key\",\"da1fa263-8b25-42b6-a820-c0036f21ba7f\":\"ATKey.Card NFC\",\"dd4ec289-e01d-41c9-bb89-70fa845d4bf2\":\"iCloud Keychain (Managed)\",\"e1a96183-5016-4f24-b55b-e3ae23614cc6\":\"ATKey.Pro CTAP2.0\",\"e416201b-afeb-41ca-a03d-2281c28322aa\":\"ATKey.Pro CTAP2.1\",\"e77e3c64-05e3-428b-8824-0cbeb04b829d\":\"Security Key NFC by Yubico\",\"e86addcd-7711-47e5-b42a-c18257b0bf61\":\"IDCore 3121 Fido\",\"ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4\":\"Google Password Manager\",\"eabb46cc-e241-80bf-ae9e-96fa6d2975cf\":\"TOKEN2 PIN Plus Security Key Series \",\"eb3b131e-59dc-536a-d176-cb7306da10f5\":\"ellipticSecure MIRkey USB Authenticator\",\"ec31b4cc-2acc-4b8e-9c01-bade00ccbe26\":\"KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator\",\"ee041bce-25e5-4cdb-8f86-897fd6418464\":\"Feitian ePass FIDO2-NFC Authenticator\",\"ee882879-721c-4913-9775-3dfcce97072a\":\"YubiKey 5 Series\",\"efb96b10-a9ee-4b6c-a4a9-d32125ccd4a4\":\"Safenet eToken FIDO\",\"f3809540-7f14-49c1-a8b3-8f813b225541\":\"Enpass\",\"f4c63eff-d26c-4248-801c-3736c7eaa93a\":\"FIDO KeyPass S3\",\"f56f58b3-d711-4afc-ba7d-6ac05f88cb19\":\"WinMagic FIDO Eazy - Phone\",\"f7c558a0-f465-11e8-b568-0800200c9a66\":\"KONAI Secp256R1 FIDO2 Conformance Testing CTAP2 Authenticator\",\"f8a011f3-8c0a-4d15-8006-17111f9edc7d\":\"Security Key by Yubico\",\"fa2b99dc-9e39-4257-8f92-4a30d23c4118\":\"YubiKey 5 Series with NFC\",\"fbefdf68-fe86-0106-213e-4d5fa24cbe2e\":\"Excelsecu eSecu FIDO2 NFC Security Key\",\"fbfc3007-154e-4ecc-8c0b-6e020557d7bd\":\"iCloud Keychain\",\"fcb1bcb4-f370-078c-6993-bc24d0ae3fbe\":\"Ledger Nano X FIDO2 Authenticator\",\"fdb141b2-5d84-443e-8a35-4698c205a502\":\"KeePassXC\",\"fec067a1-f1d0-4c5e-b4c0-cc3237475461\":\"KX701 SmartToken FIDO\"};var W=new TextDecoder(\"utf-8\");function S(e){return typeof e==\"string\"&&(e=o(e)),JSON.parse(W.decode(e))}function b(e){typeof e==\"string\"&&(e=o(e));let t=new DataView(e.slice(32,33)).getUint8(0);return{rpIdHash:$(e),flags:{userPresent:!!(t&1),userVerified:!!(t&4),backupEligibility:!!(t&8),backupState:!!(t&16),attestedData:!!(t&64),extensionsIncluded:!!(t&128)},signCount:new DataView(e.slice(33,37)).getUint32(0,!1),aaguid:G(e)}}function $(e){return n(e.slice(0,32))}function G(e){if(e.byteLength<53)return\"00000000-0000-0000-0000-000000000000\";let t=e.slice(37,53),a=C(t);return`${a.substring(0,8)}-${a.substring(8,12)}-${a.substring(12,16)}-${a.substring(16,20)}-${a.substring(20,32)}`}function E(e){switch(e){case-7:return\"ES256\";case-8:return\"EdDSA\";case-257:return\"RS256\";default:throw new Error(`Unknown algorithm code: ${e}`)}}function z(e){let t=b(e.response.authenticatorData);return N(e,t)}function N(e,t){let a=t.aaguid;return{authenticator:{aaguid:a,counter:t.signCount,icon_light:\"https://webauthn.passwordless.id/authenticators/\"+a+\"-light.png\",icon_dark:\"https://webauthn.passwordless.id/authenticators/\"+a+\"-dark.png\",name:p[a]??\"Unknown\"},credential:{id:e.id,publicKey:e.response.publicKey,algorithm:E(e.response.publicKeyAlgorithm),transports:e.response.transports},synced:t.flags.backupEligibility,user:e.user,userVerified:t.flags.userVerified}}function I(e,t){return{credentialId:e.id,userId:e.response.userHandle,counter:t.signCount,userVerified:t.flags.userVerified,authenticatorAttachment:e.authenticatorAttachment}}function j(e){let t=b(e.response.authenticatorData);return I(e,t)}function J(){let e=crypto.getRandomValues(new Uint8Array(18));return n(e)}async function X(e,t){if(typeof e==\"function\"){let a=e(t);return a instanceof Promise?await a:a}return e===t}async function m(e,t){return!await X(e,t)}async function _(e,t){let a=S(e.response.clientDataJSON),r=b(e.response.authenticatorData);if(!r.aaguid)throw new Error(\"Unexpected errror, no AAGUID.\");if(a.type!==\"webauthn.create\")throw new Error(`Unexpected ClientData type: ${a.type}`);if(await m(t.origin,a.origin))throw new Error(`Unexpected ClientData origin: ${a.origin}`);if(await m(t.challenge,a.challenge))throw new Error(`Unexpected ClientData challenge: ${a.challenge}`);return l.toRegistrationInfo(e,r)}async function q(e,t,a){if(e.id!==t.id)throw new Error(`Credential ID mismatch: ${e.id} vs ${t.id}`);if(!await U({algorithm:t.algorithm,publicKey:t.publicKey,authenticatorData:e.response.authenticatorData,clientData:e.response.clientDataJSON,signature:e.response.signature,verbose:a.verbose}))throw new Error(`Invalid signature: ${e.response.signature}`);let i=S(e.response.clientDataJSON),c=b(e.response.authenticatorData);if(a.verbose&&(console.debug(i),console.debug(c)),i.type!==\"webauthn.get\")throw new Error(`Unexpected clientData type: ${i.type}`);if(await m(a.origin,i.origin))throw new Error(`Unexpected ClientData origin: ${i.origin}`);if(await m(a.challenge,i.challenge))throw new Error(`Unexpected ClientData challenge: ${i.challenge}`);let d=a.domain??new URL(i.origin).hostname,h=n(await A(f(d)));if(c.rpIdHash!==h)throw new Error(`Unexpected RpIdHash: ${c.rpIdHash} vs ${h}`);if(!c.flags.userPresent)throw new Error(\"Unexpected authenticator flags: missing userPresent\");if(!c.flags.userVerified&&a.userVerified)throw new Error(\"Unexpected authenticator flags: missing userVerified\");if(a.counter&&c.signCount<=a.counter)throw new Error(`Unexpected authenticator counter: ${c.signCount} (should be > ${a.counter})`);return I(e,c)}function T(e){switch(e){case\"RS256\":return{name:\"RSASSA-PKCS1-v1_5\",hash:\"SHA-256\"};case\"ES256\":return{name:\"ECDSA\",namedCurve:\"P-256\",hash:\"SHA-256\"};default:throw new Error(`Unknown or unsupported crypto algorithm: ${e}. Only 'RS256' and 'ES256' are supported.`)}}async function R(e,t){let a=T(e),r=o(t);return crypto.subtle.importKey(\"spki\",r,a,!1,[\"verify\"])}async function U({algorithm:e,publicKey:t,authenticatorData:a,clientData:r,signature:i,verbose:c}){let d=await R(e,t);c&&console.debug(d);let h=await A(o(r)),P=O(o(a),h);c&&(console.debug(\"Algorithm: \"+e),console.debug(\"Public key: \"+t),console.debug(\"Data: \"+n(P)),console.debug(\"Signature: \"+i));let D=o(i);e==\"ES256\"&&(D=Z(D));let x=T(e);return await crypto.subtle.verify(x,d,D,P)}function Z(e){let t=new Uint8Array(e),a=t[4]===0?5:4,r=a+32,i=t[r+2]===0?r+3:r+2,c=t.slice(a,r),d=t.slice(i);return new Uint8Array([...c,...d])}var Q={client:w,server:F,parsers:l,utils:u,authenticatorMetadata:p},se=Q;export{p as authenticatorMetadata,w as client,se as default,l as parsers,F as server,u as utils};\n//# sourceMappingURL=webauthn.min.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\nimport Onboarding from './onboarding'\nimport Profile from './profile'\nimport Validate from \"./validate\";\nimport PasskeyLogin from \"./passkey-login\";\nimport PasskeyTableManager from \"./passkey-table-manager\";\n\n/**\n * The Global rsssl_onboard object is defined in the PHP file that enqueues this script.\n * @global rsssl_onboard\n * It contains the following properties:\n * @typedef {Object} rsssl_onboard\n * @property {string} root - The root URL of the site.\n * @property {string} redirect_to - The URL to redirect to after the onboarding process is complete.\n * @property {string} user_id - The ID of the user.\n * @property {string} login_nonce - The nonce for the login.\n * @property {string} totp_data - The data for the TOTP.\n * @property {string} totp_data.totp_url - The URL for the TOTP.\n * @property {string} totp_data.backup_codes - The backup codes for the TOTP.\n * @property {string} totp_data.key - The key for the TOTP.\n * @property {string} totp_data.authcode - The authcode for the TOTP.\n * @property {string} totp_data.provider - The provider for the TOTP.\n * @property {string} totp_data.redirect_to - The URL to redirect to after the TOTP process is complete.\n * @property {string} display_name- The error message for the TOTP.\n */\n\n/**\n * The Global rsssl_profile object is defined in the PHP file that enqueues this script.\n * @global rsssl_profile\n * It contains the following properties:\n * @typedef {Object} rsssl_profile\n */\n\n/**\n * The Global rsssl_validate object is defined in the PHP file that enqueues this script.\n * @global rsssl_validate\n * It contains the following properties:\n * @typedef {Object} rsssl_validate\n */\n\n/**\n * The Global rsssl_validate object is defined in the PHP file that enqueues this script.\n * @global rsssl_login\n * It contains the following properties:\n * @typedef {Object} rsssl_login\n */\n\nwindow.onload = function() {\n if(typeof rsssl_onboard !== 'undefined') {\n let onboarding = new Onboarding(rsssl_onboard.root, rsssl_onboard);\n onboarding.init();\n }\n\n if (typeof rsssl_profile !== 'undefined') {\n let profile = new Profile(rsssl_profile.root, rsssl_profile);\n profile.init();\n const tableManager = new PasskeyTableManager(rsssl_profile.root, rsssl_profile);\n tableManager.init();\n }\n\n if(typeof rsssl_validate !== 'undefined') {\n let validate = new Validate(rsssl_validate.root, rsssl_validate);\n validate.init();\n }\n if(typeof rsssl_login !== 'undefined') {\n let login = new PasskeyLogin(rsssl_login.root, rsssl_login);\n login.init();\n }\n}"],"names":["qrcode","BaseAuth","_createClass","root","settings","_this","_classCallCheck","_defineProperty","id","document","getElementById","name","querySelector","concat","value","urlExtension","data","method","arguments","length","undefined","url","fetchParams","headers","body","JSON","stringify","fetch","callback","element","getElement","addEventListener","e","preventDefault","error","console","totp_url","totp_data","qr","addData","make","qrElem","svgString","createSvgTag","replace","innerHTML","TextToCode","backup_codes","TextToCodeString","forEach","item","downloadLink","createElement","setAttribute","encodeURIComponent","style","display","appendChild","click","removeChild","text","key","navigator","clipboard","writeText","then","originalText","innerText","translatables","keyCopied","color","setTimeout","err","keyCopiedFailed","translatableStrings","webauthn_not_available","unknown_error","response_error","passkey_not_found","passkey_login_error","passkey_registration_error","passkey_login_success","passkey_configuration","error_assertion","notice_inform","register_passkey","network_not_ok","error_complete_registration","usb","nfc","ble","internal","cross_platform","unknown","pending","success","login","login_failed","log_in_with_passkey","or","_regeneratorRuntime","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","callInvokeWithMethodAndArg","Error","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","apply","_next","_throw","_defineProperties","_toPropertyKey","_toPrimitive","toPrimitive","String","Number","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","_assertThisInitialized","ReferenceError","Boolean","valueOf","bind","_inherits","_setPrototypeOf","Passkey","Onboarding","_BaseAuth","init","endpoints","passkey","that","endpoint","endpointsElement","event","performFetchOp","response","json","window","location","href","redirect_to","logFetchError","endpointElem","_handleClick","handleClick","selectedProvider","getCheckedInputValue","provider","user_id","login_nonce","validation_check","handleValidation","removeEventListener","fireRegistration","_ref","_callee","sendData","_data","_callee$","_context","validation_action","token","t0","log","ok","displayTwoFaOnboardingError","_x","_x2","totpSubmit","_ref2","_callee2","authCode","_callee2$","_context2","_x3","resendButton","responseData","message","clearTwoFactorPrompt","displayTwoFaOnboardingSuccess","jsonErr","downloadButton","download_codes","passkeySubmit","copyTextAndShowMessage","readyState","qr_generator","loginForm","errorDiv","className","insertAdjacentElement","remove","messageDiv","elements","getElementsByClassName","Login_Passkey","form","getElementsByName","addPasskeyButton","passkeyButton","getAttribute","handlePasskeyLogin","_this2","submitButton","passkeyButtonContainer","justifyContent","alignItems","orDivider","lockIcon","marginRight","insertBefore","firstChild","parentNode","nextSibling","errorContainer","fontSize","marginTop","textAlign","width","wordWrap","wordBreak","get","set","origAddEventListener","EventTarget","listener","options","PasskeyTableManager","_len","args","Array","_key","tableContainer","initEventListeners","fetchDataAndRender","target","matches","handleRemove","dataset","deviceId","renderPasskeyTable","rows","tableHTML","buildTableRows","tableBody","count","output","row","authDeviceId","created_at","updated_at","_this3","entry_id","_this4","removeUrl","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","toString","from","test","isArray","client","base64url","Decoder","cbor","BUTTON_CLASSES","failed","knownAuthenticators","onboarding","manager","translate","passkey_configure_manual_login","BUTTON_TEXT","stepThree","observer","MutationObserver","handleMutation","observe","attributes","assignClickListener","handlePasskeyRegister","mutations","mutation","attributeName","displayStyle","getComputedStyle","showPasskeyOptions","updateRegisterButtonState","state","_workButton$classList","workButton","logButtonState","disabled","classList","add","_handlePasskeyLogin","userHandle","userNameElement","user_login","requestData","errorData","_errorData","publicKeyCredentialRequestOptions","assertion","isAvailable","handleError","localStorage","getItem","credentials","status","t1","prepareCredentialRequest","publicKey","sendAssertion","t2","_prepareCredentialRequest","challenge","toBuffer","allowCredentials","map","cred","_objectSpread","_sendAssertion","_callee3","_result","result","_callee3$","_context3","credential","rawId","encode","authenticatorData","clientDataJSON","signature","includes","onbeforeunload","mainElement","container","_handlePasskeyRegister","_callee4","publicKeyCreationOptions","registrationResult","_form","_callee4$","_context4","fetchPublicKeyOptions","completeRegistration","reload","_fetchPublicKeyOptions","_callee5","_callee5$","_context5","generateUniqueUserHandle","user","display_name","pubKeyCredParams","alg","rp","hostname","authenticatorSelection","authenticatorAttachment","userVerification","_completeRegistration","_callee6","deviceName","_callee6$","_context6","getDeviceName","attestationObject","authDevice","device_name","setItem","reason","_x4","_fireRegistration","_callee7","automatic","_args7","_callee7$","_context7","decodedAttestationObject","decodeAllSync","Uint8Array","authData","aaguid","aaguidString","_byte","padStart","join","getTransports","transports","Date","now","Profile","qrCodeContainer","enableCheckbox","tableRowSelection","methodSelection","querySelectorAll","validationEmail","change2faConfig","passKeyContainer","passkeySection","origBeforeUnload","profileForm","dispatchEvent","Event","thereIsAnAddDevice","checked","parent","selectedMethod","_selectedMethod","_parent","action","rsssl_profile","profile","ajax_url","URLSearchParams","inPutField","opacity","ajaxUrl","inputField","requestSubmit","fetchPasskeyData","nonce","registered","last_used","actions","Validate","validateButton","PasskeyLogin","onload","rsssl_onboard","tableManager","rsssl_validate","validate","rsssl_login"],"sourceRoot":""}