From eceb608a46d3c0098c00bc67b3fdb212167c1bf3 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 5 Feb 2016 14:26:22 +0800 Subject: [PATCH 01/86] Added TcpClient based on chrome.sockets.tcp. Improved BytesIO. Improved HttpClient. --- LICENSE.md | 2 +- bower.json | 2 +- dist/hprose-html5.js | 4 +- gulpfile.js | 1 + package.json | 2 +- src/BytesIO.js | 51 +++- src/CopyRight.js | 2 +- src/HttpClient.js | 6 +- src/TcpClient.js | 603 +++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 656 insertions(+), 17 deletions(-) create mode 100644 src/TcpClient.js diff --git a/LICENSE.md b/LICENSE.md index 5a1390e..02bb1a1 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2008-2015 http://hprose.com +Copyright (c) 2008-2016 http://hprose.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/bower.json b/bower.json index 0ce04a7..87fb9dc 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.3", + "version": "2.0.4", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index d9519f1..e7dac43 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,7 +1,7 @@ -// Hprose for HTML5 v2.0.3 +// Hprose for HTML5 v2.0.4 // Copyright (c) 2008-2015 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=("Uint8Array"in n?new n.Uint8Array(i):new Array(i)),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 4eb13ed..bf3df85 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -24,6 +24,7 @@ gulp.task('compress', ['clear'], function() { 'src/ResultMode.js', 'src/Client.js', 'src/HttpClient.js', + 'src/TcpClient.js', 'src/WebSocketClient.js', 'src/JSONRPCClientFilter.js', 'src/Loader.js']) diff --git a/package.json b/package.json index 420d9f5..e9f9b10 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.3", + "version": "2.0.4", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/BytesIO.js b/src/BytesIO.js index 160be21..d41bdec 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -13,7 +13,7 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Aug 21, 2015 * + * LastModified: Feb 5, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -22,6 +22,16 @@ (function (global, undefined) { 'use strict'; + var arrayLikeObjectArgumentsEnabled = true; + + try { + String.fromCharCode.apply(String, new Uint8Array([1, 2])); + } + catch (e) { + arrayLikeObjectArgumentsEnabled = false; + Object.defineProperty(Array.prototype, 'subarray', { value: Array.prototype.slice }); + } + var Future = global.hprose.Future; var _EMPTY_BYTES = new Uint8Array(0); @@ -80,7 +90,7 @@ } function readShortString(bytes, n) { - var charCodes = new Uint16Array(n); + var charCodes = new Array(n); var i = 0, off = 0; for (var len = bytes.length; i < n && off < len; i++) { var unit = bytes[off++]; @@ -138,14 +148,14 @@ } } if (i < n) { - charCodes = charCodes.subarray(0, i); + charCodes.length = i; } return [String.fromCharCode.apply(String, charCodes), off]; } function readLongString(bytes, n) { var buf = []; - var charCodes = new Uint16Array(0xffff); + var charCodes = new Array(0xffff); var i = 0, off = 0; for (var len = bytes.length; i < n && off < len; i++) { var unit = bytes[off++]; @@ -203,13 +213,15 @@ } if (i >= 65534) { var size = i + 1; - buf.push(String.fromCharCode.apply(String, charCodes.subarray(0, size))); + charCodes.length = size; + buf.push(String.fromCharCode.apply(String, charCodes)); n -= size; i = -1; } } if (i > 0) { - buf.push(String.fromCharCode.apply(String, charCodes.subarray(0, i))); + charCodes.length = i; + buf.push(String.fromCharCode.apply(String, charCodes)); } return [buf.join(''), off]; } @@ -279,6 +291,15 @@ return [bytes.subarray(0, off), off]; } + function toArray(bytes) { + var n = bytes.length; + var a = new Array(bytes.length); + for (var i = 0; i < n; ++i) { + a[i] = bytes[i]; + } + return a; + } + function pow2roundup(x) { --x; x |= x >> 1; @@ -360,6 +381,17 @@ _EMPTY_BYTES : this._bytes.subarray(0, this._length); } }, + buffer: { get : function() { + if (this._bytes === null) { + return _EMPTY_BYTES.buffer; + } + if (this._bytes.buffer.slice) { + return this._bytes.buffer.slice(0, this._length); + } + var buf = new Uint8Array(this._length); + buf.set(this._bytes.subarray(0, this._length)); + return buf.buffer; + } }, mark: { value: function() { this._wmark = this._length; this._rmark = this._off; @@ -555,17 +587,18 @@ } if (n === 0) return ''; var bytes = this._bytes.subarray(this._off, this._off += n); + var charCodes = (arrayLikeObjectArgumentsEnabled ? bytes : toArray(bytes)); if (n < 100000) { - return String.fromCharCode.apply(String, bytes); + return String.fromCharCode.apply(String, charCodes); } var remain = n & 0xffff; var count = n >> 16; var a = new Array(remain ? count + 1 : count); for (var i = 0; i < count; ++i) { - a[i] = String.fromCharCode.apply(String, bytes.subarray(i << 16, (i + 1) << 16)); + a[i] = String.fromCharCode.apply(String, charCodes.subarray(i << 16, (i + 1) << 16)); } if (remain) { - a[count] = String.fromCharCode.apply(String, bytes.subarray(count << 16, n)); + a[count] = String.fromCharCode.apply(String, charCodes.subarray(count << 16, n)); } return a.join(''); } }, diff --git a/src/CopyRight.js b/src/CopyRight.js index 26fa1eb..9bf7745 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.3 +// Hprose for HTML5 v2.0.4 // Copyright (c) 2008-2015 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/HttpClient.js b/src/HttpClient.js index cab1e0d..4647d69 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,7 +12,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Aug 2, 2015 * + * LastModified: Feb 5, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -70,7 +70,9 @@ xhr.send(request.buffer.slice(0, request.length)); } else { - xhr.send(request.buffer); + var buf = new Uint8Array(request.length); + buf.set(request); + xhr.send(buf.buffer); } return xhr; } diff --git a/src/TcpClient.js b/src/TcpClient.js new file mode 100644 index 0000000..14d0a2d --- /dev/null +++ b/src/TcpClient.js @@ -0,0 +1,603 @@ +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * TcpClient.js * + * * + * hprose tcp client for HTML5. * + * * + * LastModified: Feb 5, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +/* jshint -W067 */ +(function (global, undefined) { + 'use strict'; + + var Client = global.hprose.Client; + var BytesIO = global.hprose.BytesIO; + var Future = global.hprose.Future; + var tcpInit = false; + + function noop(){} + + var socketPool = {}; + var receivePool = {}; + + function TCPSocket() { + this.socketId = new Future(); + this.connected = false; + this.timeid = undefined; + this.onclose = noop; + this.onconnect = noop; + this.onreceive = noop; + this.onerror = noop; + } + + Object.defineProperties(TCPSocket.prototype, { + connect: { value: function(address, port, tls, options) { + var self = this; + chrome.sockets.tcp.create({ persistent: options && options.persistent }, function(createInfo) { + if (options) { + if ('noDelay' in options) { + chrome.sockets.tcp.setNoDelay(createInfo.socketId, options.noDelay, function(result) { + if (result < 0) { + self.socketId.reject(result); + chrome.sockets.tcp.disconnect(createInfo.socketId); + chrome.sockets.tcp.close(createInfo.socketId); + self.onclose(); + } + }); + } + if ('keepAlive' in options) { + chrome.sockets.tcp.setKeepAlive(createInfo.socketId, options.keepAlive, function(result) { + if (result < 0) { + self.socketId.reject(result); + chrome.sockets.tcp.disconnect(createInfo.socketId); + chrome.sockets.tcp.close(createInfo.socketId); + self.onclose(); + } + }); + } + } + if (tls) { + chrome.sockets.tcp.setPaused(createInfo.socketId, true, function() { + chrome.sockets.tcp.connect(createInfo.socketId, address, port, function(result) { + if (result < 0) { + self.socketId.reject(result); + chrome.sockets.tcp.disconnect(createInfo.socketId); + chrome.sockets.tcp.close(createInfo.socketId); + self.onclose(); + } + else { + chrome.sockets.tcp.secure(createInfo.socketId, function(secureResult) { + if (secureResult !== 0) { + self.socketId.reject(result); + chrome.sockets.tcp.disconnect(createInfo.socketId); + chrome.sockets.tcp.close(createInfo.socketId); + self.onclose(); + } + else { + chrome.sockets.tcp.setPaused(createInfo.socketId, false, function() { + self.socketId.resolve(createInfo.socketId); + }); + } + }); + } + }); + }); + } + else { + chrome.sockets.tcp.connect(createInfo.socketId, address, port, function(result) { + if (result < 0) { + self.socketId.reject(result); + chrome.sockets.tcp.disconnect(createInfo.socketId); + chrome.sockets.tcp.close(createInfo.socketId); + self.onclose(); + } + else { + self.socketId.resolve(createInfo.socketId); + } + }); + } + }); + this.socketId.then(function(socketId) { + socketPool[socketId] = self; + self.connected = true; + self.onconnect(socketId); + }, function(reason) { + self.onerror(reason); + }); + } }, + send: { value: function(data) { + var self = this; + var promise = new Future(); + this.socketId.then(function(socketId) { + chrome.sockets.tcp.send(socketId, data, function(sendInfo) { + if (sendInfo.resultCode < 0) { + self.onerror(sendInfo.resultCode); + promise.reject(sendInfo.resultCode); + self.destroy(); + } + else { + promise.resolve(sendInfo.bytesSent); + } + }); + }); + return promise; + } }, + destroy: { value: function() { + var self = this; + this.connected = false; + this.socketId.then(function(socketId) { + chrome.sockets.tcp.disconnect(socketId); + chrome.sockets.tcp.close(socketId); + delete socketPool[socketId]; + delete receivePool[socketId]; + self.onclose(); + }); + } }, + ref: { value: function() { + this.socketId.then(function(socketId) { + chrome.sockets.tcp.setPaused(socketId, false); + }); + } }, + unref: { value: function() { + this.socketId.then(function(socketId) { + chrome.sockets.tcp.setPaused(socketId, true); + }); + } }, + clearTimeout: { value: function() { + if (this.timeid !== undefined) { + global.clearTimeout(this.timeid); + } + } }, + setTimeout: { value: function(timeout, fn) { + this.clearTimeout(); + this.timeid = global.setTimeout(fn, timeout); + } } + }); + + function receiveListener(info) { + if (!(info.socketId in receivePool)) { + receivePool[info.socketId] = { + bytes: new BytesIO(), + headerLength: 4, + dataLength: -1, + id: null + }; + } + var socket = socketPool[info.socketId]; + var entry = receivePool[info.socketId]; + var bytes = entry.bytes; + var headerLength = entry.headerLength; + var dataLength = entry.dataLength; + var id = entry.id; + bytes.write(info.data); + while (true) { + if ((dataLength < 0) && (bytes.length >= headerLength)) { + dataLength = bytes.readInt32BE(); + if ((dataLength & 0x80000000) !== 0) { + dataLength &= 0x7fffffff; + headerLength = 8; + } + } + if ((headerLength === 8) && (id === null) && (bytes.length >= headerLength)) { + id = bytes.readInt32BE(); + } + if ((dataLength >= 0) && ((bytes.length - headerLength) >= dataLength)) { + socket.onreceive(bytes.read(dataLength), id); + headerLength = 4; + id = null; + bytes.trunc(); + dataLength = -1; + } + else { + break; + } + } + entry.bytes = bytes; + entry.headerLength = headerLength; + entry.dataLength = dataLength; + entry.id = id; + } + + function receiveErrorListener(info) { + var socket = socketPool[info.socketId]; + socket.onerror(info.resultCode); + socket.destroy(); + } + + function TcpTransporter(client) { + if (client) { + this.client = client; + this.uri = this.client.uri; + this.size = 0; + this.pool = []; + this.requests = []; + } + } + + Object.defineProperties(TcpTransporter.prototype, { + create: { value: function() { + var parser = document.createElement('a'); + parser.href = this.uri; + var protocol = parser.protocol; + // HTMLAnchorElement can't parse TCP protocol + // replace to HTTP can be correctly resolved. + parser.protocol = "http:"; + var address = parser.hostname; + var port = parseInt(parser.port); + var tls; + if (protocol === 'tcp:' || + protocol === 'tcp4:' || + protocol === 'tcp6:') { + tls = false; + } + else if (protocol === 'tcps:' || + protocol === 'tcp4s:' || + protocol === 'tcp6s:' || + protocol === 'tls:') { + tls = true; + } + else { + throw new Error('Unsupported ' + protocol + ' protocol!'); + } + var conn = new TCPSocket(); + var self = this; + conn.connect(address, port, tls, this.client.options); + conn.onclose = function() { --self.size; }; + ++this.size; + return conn; + } } + }); + + function FullDuplexTcpTransporter(client) { + TcpTransporter.call(this, client); + } + + FullDuplexTcpTransporter.prototype = Object.create( + TcpTransporter.prototype, { + fetch: { value: function() { + var pool = this.pool; + while (pool.length > 0) { + var conn = pool.shift(); + if (conn.connected) { + if (conn.count === 0) { + conn.clearTimeout(); + conn.ref(); + } + return conn; + } + } + return null; + } }, + init: { value: function(conn) { + var self = this; + conn.count = 0; + conn.futures = {}; + conn.timeoutIds = {}; + conn.onreceive = function (data, id) { + var future = conn.futures[id]; + if (future) { + self.clean(conn, id); + if (conn.count === 0) { + self.recycle(conn); + } + future.resolve(data); + } + }; + conn.onerror = function (e) { + var futures = conn.futures; + for (var id in futures) { + var future = futures[id]; + self.clean(conn, id); + future.reject(e); + } + }; + } }, + recycle: { value: function(conn) { + conn.unref(); + conn.setTimeout(this.client.poolTimeout, function() { + conn.destroy(); + }); + } }, + clean: { value: function(conn, id) { + if (conn.timeoutIds[id] !== undefined) { + global.clearTimeout(conn.timeoutIds[id]); + delete conn.timeoutIds[id]; + } + delete conn.futures[id]; + --conn.count; + this.sendNext(conn); + } }, + sendNext: { value: function(conn) { + if (conn.count < 10) { + if (this.requests.length > 0) { + var request = this.requests.shift(); + request.push(conn); + this.send.apply(this, request); + } + else { + this.pool.push(conn); + } + } + } }, + send: { value: function(request, future, id, env, conn) { + var self = this; + var timeout = env.timeout; + if (timeout > 0) { + conn.timeoutIds[id] = global.setTimeout(function() { + self.clean(conn, id); + if (conn.count === 0) { + self.recycle(conn); + } + future.reject(new TimeoutError('timeout')); + }, timeout); + } + conn.count++; + conn.futures[id] = future; + + var len = request.length; + var buf = new BytesIO(8 + len); + buf.writeInt32BE(len | 0x80000000, 0); + buf.writeInt32BE(id, 4); + buf.write(request); + conn.send(buf.buffer).then(function(result) { + self.sendNext(conn); + }); + } }, + getNextId: { value: function() { + return (this.nextid < 0x7fffffff) ? ++this.nextid : this.nextid = 0; + } }, + sendAndReceive: { value: function(request, future, env) { + var conn = this.fetch(); + var id = this.getNextId(); + if (conn) { + this.send(request, future, id, env, conn); + } + else if (this.size < this.client.maxPoolSize) { + conn = this.create(); + conn.onerror = function(e) { + future.reject(e); + }; + var self = this; + conn.onconnect = function() { + self.init(conn); + self.send(request, future, id, env, conn); + }; + } + else { + this.requests.push([request, future, id, env]); + } + } } + }); + + FullDuplexTcpTransporter.prototype.constructor = TcpTransporter; + + function HalfDuplexTcpTransporter(client) { + TcpTransporter.call(this, client); + } + + HalfDuplexTcpTransporter.prototype = Object.create( + TcpTransporter.prototype, { + fetch: { value: function() { + var pool = this.pool; + while (pool.length > 0) { + var conn = pool.shift(); + if (conn.connected) { + conn.clearTimeout(); + conn.ref(); + return conn; + } + } + return null; + } }, + recycle: { value: function(conn) { + conn.unref(); + conn.setTimeout(this.client.poolTimeout, function() { + conn.destroy(); + }); + this.pool.push(conn); + } }, + clean: { value: function(conn) { + conn.onreceive = noop; + conn.onerror = noop; + if (conn.timeoutId !== undefined) { + global.clearTimeout(conn.timeoutId); + delete conn.timeoutId; + } + } }, + sendNext: { value: function(conn) { + if (this.requests.length > 0) { + var request = this.requests.shift(); + request.push(conn); + this.send.apply(this, request); + } + else { + this.recycle(conn); + } + } }, + send: { value: function(request, future, env, conn) { + var self = this; + var timeout = env.timeout; + if (timeout > 0) { + conn.timeoutId = global.setTimeout(function() { + self.clean(conn); + self.recycle(conn); + future.reject(new TimeoutError('timeout')); + }, timeout); + } + conn.onreceive = function(data) { + self.clean(conn); + self.sendNext(conn); + future.resolve(data); + }; + conn.onerror = function(e) { + self.clean(conn); + future.reject(e); + }; + + var len = request.length; + var buf = new BytesIO(4 + len); + buf.writeUInt32BE(len, 0); + buf.write(request); + conn.send(buf.buffer); + } }, + sendAndReceive: { value: function(request, future, env) { + var conn = this.fetch(); + if (conn) { + this.send(request, future, env, conn); + } + else if (this.size < this.client.maxPoolSize) { + conn = this.create(); + var self = this; + conn.onerror = function(e) { + future.reject(e); + }; + conn.onconnect = function() { + self.send(request, future, env, conn); + }; + } + else { + this.requests.push([request, future, env]); + } + } } + }); + + HalfDuplexTcpTransporter.prototype.constructor = TcpTransporter; + + function TcpClient(uri, functions, settings) { + if (!tcpInit) { + tcpInit = true; + chrome.sockets.tcp.onReceive.addListener(receiveListener); + chrome.sockets.tcp.onReceiveError.addListener(receiveErrorListener); + } + if (this.constructor !== TcpClient) { + return new TcpClient(uri, functions, settings); + } + Client.call(this, uri, functions, settings); + + var self = this; + var _noDelay = true; + var _fullDuplex = false; + var _maxPoolSize = 10; + var _poolTimeout = 30000; + var fdtrans = null; + var hdtrans = null; + + function getNoDelay() { + return _noDelay; + } + + function setNoDelay(value) { + _noDelay = !!value; + } + + function getFullDuplex() { + return _fullDuplex; + } + + function setFullDuplex(value) { + _fullDuplex = !!value; + } + + function getMaxPoolSize() { + return _maxPoolSize; + } + + function setMaxPoolSize(value) { + if (typeof(value) === 'number') { + _maxPoolSize = value | 0; + if (_maxPoolSize < 1) { + _maxPoolSize = 10; + } + } + else { + _maxPoolSize = 10; + } + } + + function getPoolTimeout() { + return _poolTimeout; + } + + function setPoolTimeout(value) { + if (typeof(value) === 'number') { + _poolTimeout = value | 0; + } + else { + _poolTimeout = 0; + } + } + + function sendAndReceive(request, env) { + var future = new Future(); + if (_fullDuplex) { + if ((fdtrans === null) || (fdtrans.uri !== self.uri)) { + fdtrans = new FullDuplexTcpTransporter(self); + } + fdtrans.sendAndReceive(request, future, env); + } + else { + if ((hdtrans === null) || (hdtrans.uri !== self.uri)) { + hdtrans = new HalfDuplexTcpTransporter(self); + } + hdtrans.sendAndReceive(request, future, env); + } + if (env.oneway) future.resolve(); + return future; + } + + Object.defineProperties(this, { + noDelay: { get: getNoDelay, set: setNoDelay }, + fullDuplex: { get: getFullDuplex, set: setFullDuplex }, + maxPoolSize: { get: getMaxPoolSize, set: setMaxPoolSize }, + poolTimeout: { get: getPoolTimeout, set: setPoolTimeout }, + sendAndReceive: { value: sendAndReceive } + }); + } + + function checkuri(uri) { + var parser = document.createElement('a'); + parser.href = uri; + var protocol = parser.protocol; + if (protocol === 'tcp:' || + protocol === 'tcp4:'|| + protocol === 'tcp6:' || + protocol === 'tcps:' || + protocol === 'tcp4s:' || + protocol === 'tcp6s:' || + protocol === 'tls:') { + return; + } + throw new Error('This client desn\'t support ' + protocol + ' scheme.'); + } + + function create(uri, functions, settings) { + if (typeof uri === 'string') { + checkuri(uri); + } + else if (Array.isArray(uri)) { + uri.forEach(function(uri) { checkuri(uri); }); + } + else { + return new Error('You should set server uri first!'); + } + return new TcpClient(uri, functions, settings); + } + + Object.defineProperty(TcpClient, 'create', { value: create }); + + global.hprose.TcpClient = TcpClient; + +}(function() { + return this || (1, eval)('this'); +}())); From e446d7ee5ee1df39733abf268ec184eac3e25f13 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sat, 13 Feb 2016 13:42:00 +0800 Subject: [PATCH 02/86] Fixed readStringAsBytes Removed unused Future Changed 0xDfff to 0xDFFF --- src/BytesIO.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/BytesIO.js b/src/BytesIO.js index d41bdec..ff70e13 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -13,7 +13,7 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Feb 5, 2016 * + * LastModified: Feb 13, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -32,8 +32,6 @@ Object.defineProperty(Array.prototype, 'subarray', { value: Array.prototype.slice }); } - var Future = global.hprose.Future; - var _EMPTY_BYTES = new Uint8Array(0); var _INIT_SIZE = 1024; var indexof = Function.prototype.call.bind(Array.prototype.indexOf); @@ -65,7 +63,7 @@ bytes[p++] = 0xC0 | (codeUnit >> 6); bytes[p++] = 0x80 | (codeUnit & 0x3F); } - else if (codeUnit < 0xD800 || codeUnit > 0xDfff) { + else if (codeUnit < 0xD800 || codeUnit > 0xDFFF) { bytes[p++] = 0xE0 | (codeUnit >> 12); bytes[p++] = 0x80 | ((codeUnit >> 6) & 0x3F); bytes[p++] = 0x80 | (codeUnit & 0x3F); @@ -236,7 +234,7 @@ function readStringAsBytes(bytes, n) { if (n === undefined) n = bytes.length; - if (n === 0) return _EMPTY_BYTES; + if (n === 0) return [_EMPTY_BYTES, 0]; var i = 0, off = 0; for (var len = bytes.length; i < n && off < len; i++) { var unit = bytes[off++]; From b1eb91c69060e327e81306f6b3175286f13cdd40 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sat, 13 Feb 2016 13:56:27 +0800 Subject: [PATCH 03/86] Improved some code --- src/BytesIO.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/BytesIO.js b/src/BytesIO.js index ff70e13..71242a5 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -37,18 +37,18 @@ var indexof = Function.prototype.call.bind(Array.prototype.indexOf); function writeInt32BE(bytes, p, i) { - bytes[p++] = i >>> 24 & 0xff; - bytes[p++] = i >>> 16 & 0xff; - bytes[p++] = i >>> 8 & 0xff; - bytes[p++] = i & 0xff; + bytes[p++] = i >>> 24 & 0xFF; + bytes[p++] = i >>> 16 & 0xFF; + bytes[p++] = i >>> 8 & 0xFF; + bytes[p++] = i & 0xFF; return p; } function writeInt32LE(bytes, p, i) { - bytes[p++] = i & 0xff; - bytes[p++] = i >>> 8 & 0xff; - bytes[p++] = i >>> 16 & 0xff; - bytes[p++] = i >>> 24 & 0xff; + bytes[p++] = i & 0xFF; + bytes[p++] = i >>> 8 & 0xFF; + bytes[p++] = i >>> 16 & 0xFF; + bytes[p++] = i >>> 24 & 0xFF; return p; } @@ -153,7 +153,7 @@ function readLongString(bytes, n) { var buf = []; - var charCodes = new Array(0xffff); + var charCodes = new Array(0xFFFF); var i = 0, off = 0; for (var len = bytes.length; i < n && off < len; i++) { var unit = bytes[off++]; @@ -506,7 +506,7 @@ readUInt32BE: { value: function() { var value = this.readInt32BE(); if (value < 0) { - return (value & 0x7fffffff) + 0x80000000; + return (value & 0x7FFFFFFF) + 0x80000000; } return value; } }, @@ -526,7 +526,7 @@ readUInt32LE: { value: function() { var value = this.readInt32LE(); if (value < 0) { - return (value & 0x7fffffff) + 0x80000000; + return (value & 0x7FFFFFFF) + 0x80000000; } return value; } }, @@ -589,7 +589,7 @@ if (n < 100000) { return String.fromCharCode.apply(String, charCodes); } - var remain = n & 0xffff; + var remain = n & 0xFFFF; var count = n >> 16; var a = new Array(remain ? count + 1 : count); for (var i = 0; i < count; ++i) { From f881f9385c79d3720e828c14126b2ca0150ea3e6 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 19 Feb 2016 14:57:26 +0800 Subject: [PATCH 04/86] Update setImmediate.js --- src/setImmediate.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/setImmediate.js b/src/setImmediate.js index 9014fe4..8d5c66a 100644 --- a/src/setImmediate.js +++ b/src/setImmediate.js @@ -9,11 +9,11 @@ /**********************************************************\ * * - * hprose/common/setImmediate.js * + * setImmediate.js * * * * setImmediate for HTML5. * * * - * LastModified: Jul 19, 2015 * + * LastModified: Feb 19, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -34,20 +34,22 @@ } var doc = global.document; - var slice = Function.prototype.call.bind(Array.prototype.slice); - var toString = Function.prototype.call.bind(Object.prototype.toString); var polifill = {}; var nextId = 1; var tasks = {}; var lock = false; function wrap(handler) { - var args = slice(arguments, 1); + var args = [].slice.call(arguments, 1); return function() { handler.apply(undefined, args); }; } + function clear(handleId) { + delete tasks[handleId]; + } + function run(handleId) { if (lock) { // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a "too much recursion" error. @@ -72,10 +74,6 @@ return nextId++; } - function clear(handleId) { - delete tasks[handleId]; - } - polifill.messageChannel = function() { var channel = new global.MessageChannel(); @@ -174,7 +172,7 @@ // Don't get fooled by e.g. browserify environments. // For Node.js before 0.9 - } else if (toString(global.process) === '[object process]') { + } else if ({}.toString.call(global.process) === '[object process]') { attachTo.setImmediate = polifill.nextTick(); // For non-IE10 modern browsers From f4f2d743aa06d71a5c3ab74074b9e9696335047a Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 19 Feb 2016 15:58:35 +0800 Subject: [PATCH 05/86] Update to 2.0.5 --- bower.json | 2 +- dist/hprose-html5.js | 6 +++--- package.json | 2 +- src/CopyRight.js | 4 ++-- src/Loader.js | 3 ++- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/bower.json b/bower.json index 87fb9dc..6ad1fbc 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.4", + "version": "2.0.5", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index e7dac43..efa5dc7 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,7 +1,7 @@ -// Hprose for HTML5 v2.0.4 -// Copyright (c) 2008-2015 http://hprose.com +// Hprose for HTML5 v2.0.5 +// Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQAGBgEAAAAAAAAzHUn/qWH7EwabADPIOSfRKQfDP5PS/WIum7zHAeJQvA4d9n4POLH6lJgsLP5QlqVDZXChzavjIbyDu+IMZRgJjRkeO7Zf+8FbLd/v4y5knW31OfmeQj7s0YoUOMF6krkyS4BiP7mSKlmmHj541GqWqc+Kb6Vt+wR1/8GSKawin+FUylpP8v7CNFC+mDCtquIESHl3lqlmn2vSbLEtoXUZ3A+7utGq0GX6Y9XtB4VKcpyN9UQK4uPaSEtgFxZ1QqTYmBhiUtrpn2ErNUR4EN/1WcRPX74XOVKdB+GCyE84fay7OgS5D0c7TG2uAStvHjFbLCU8a4tNT3+knLeY6qBP7zf17KnVoH38/rvRCwxpPNcvZcj2hmvvyONaE+YMptA0k+ZNqo+R9ksTVX+jz5cxTIs7WHPpxGrSXyxGTtanhhAjSH50Llit4i5nzsa49HCauaVLno4CE4WdFZwndsYWePoC5AkJ28k7nGr8ml2h4O5ZyrGYC/LuwYeB6w4rUYIO4PKScIWS7eiLo8d8ejEcNHqBbgVw2+Q3GBBGO8Z6yQcLsHjgLUzjxLH9zScOAWCXTQMox5u+8KT3G/Fsd7V0ArIj1l0/o24Q2B5fd4D46b0t8bw5vX1Lpdnilah401iVV7ZYUGIvQ6p4m8EOJWlCqQEk+y0tMYZeDGpYTjO1GKdhdWtD01+gJe41xL1DqaRXWbt1c8K8J5J5pw/V20Bg/LfJbVVgBocJ3fpnuEm67GElv2HxnQQhx77QylSwqvqhC2pPwYvTsbtZWN7S+BqNUOLrnDaHAV2tTFYZ2t/D/WuO4pfIlZX1z+aTn7Xpx0CjwLwDcgz4fVkc8jI4YK4BGPRIT+Z9WBMFG3+lyX3AQvp8FGRdtddMvwD5gT8AbNP4l//J7SfAiFItXDl4NZ3PfKEXVV5DXdMH5SUXivCL7j2HJ75iwaVOsVG5IUBwe0ujAIffDO98WDserlGe8GeAN0KNY3H2Lb+oC+0mxAO0/ts4pUw8R9iettlxOJzzC8O8IFdCR1Eo6J+Mn6ptwRlmFgsqATmBLArwTDCf+ncSRTznZpRi2Q7ycPC5WlT7eevzUGn/hljZkD8nynBhRB50JMlDIzcVvj5G/iHXnJFn2g0plgerUdL4HQF1RdStfHnnGznVTXZfLKkpShYLI8RvAEFEZFrx4rxg1uamn+OzX1fCCCX60EkqivTzpaZhRJVzl9d+BxHMyChoL/dLZMuBC7QVJT9Y/e+RLZmXKQ+OnIkfQACq92RS10TCQoYVHgkhCi5ZRTDLvfuWlI2lyT3hHmo4z0z2f/UaylLYoJyTYhvorAhnsCshJb3kVSpGmYeb/OtwrxA8tD3WB2H6l5Ep/BvVMBO8uaq7IoBtLnu4qprc3RPUROamGpcGOWABFmqwmGU6NOF+R19XYHLtVcVm0+fwCSsb0JOppH7M3PZzkDVxQSL4AP5W60cibGDCGFcyoY8kPulA3qLz4LypX5el+eXWWC41p6G2OegEAQ+YjefUiAEo6JzfJ7t6S6GWEgYOPyJMhnmC+SH/hDojVZNRj0hjbN1wkBaf7z4oMUQPTPA79Ub0uTrH0wreXn1KfMJkR4vp/RZdqDqurF9BxEU+NdEjxhJ7pHMAzjcNzAh+HrNOjxrrO/oOVRqrkarX46HrvvBR/emGGC4InC3e+nz8Xu2HoVm6oOM9mQoF7MQTl1weMtu9JyGEh4wI+1hLWNhjNn9li5P6MFeTQmfuNwE7+j55+zh5Rywjalq6SNeIMfl7nReSTt+HF/yMdnhq0PV77xRPQU4Oik3MAQdOJrqIxKQ27QU+zD7kbAGtekqAqA/OQsCqXPPorbV0ZMW/C95JevTQD92xW4O7fm1wSQMQ8JKu15IQMcvpblf7UqW3WYSx0QtlIHurG3WPYO8flEmlkt0XCXt5ZXXkXfmZt4vwTHNNRX7OVYg3vhso+ABpkc/dUKsIivPOb2oK6xscQsbpKDL8iW6ZU1Dj9mPHTEoVf3HAd4kbmWQnkCvc7oE/XMNKPBfu8Di50kG8Y6ascL+Q8RCOjWsuAtv2767HNeHrfJiHrsigYrisx5LmcuOk5grYkP4aOM5UzatYNB5aS8EDAbfgGv+jYtpffx7/ewUTbrP67J/UrLUHj2zymKNqkE8hCMwzL1vPgaCf4ZrkutXKXaBcSTFDvQ3a7w3gqtlGCoPDhCytKnvmbdq2WBh/XW0VWoTIxD4WBIizSLHYKuQXdiCkG+fZgUw6uG6hp/iRAW+wW08MBnZ0Qg3gbd1B5rMWpwUljx71OtcrUP8OTbAjMIbpLff8H38xdxCsu1XOmoiRKhir5V/F42uxsBjxRXA1uEXcN1+ivRX5yk5D5WP1Bu0l/vbFpI8zXz/2Q4K/SAveQkv3WLPGCJbN1Ik0QndvOG86lUP0Ndi2/Om3whDupCE/e45N0xJrRnWoHAOsY515TtuSkMPEMFqkDrfzKDkLZY2q7zOftTf0M5J0sMljJiL6gCv0C7BRz5ThGWXkB1VlSjD83lpCD7hW3ZPWkYEyG0k/eL75jYl4r5Z4TEPh566GUfpYdB6SzOasmjXiDmNozb4DHp4OE04mYl/EpyjSCL1VAmFj1MWKisL6pRnWpZTo3JpkJGK3C6VLpOaiMAD/cTkXqS7pjbnDmtZKTdv+bFbs33z4ICK/cJ63s+RIWI1FlymMDcEgp9cxirnmilBPe87qudw3utAcCRUDBeQJA+mpNHdng0b8gSxFSOysKzNj2FrL7dBL/+SOUqhifUifRUmrsm9CWYFxKTaUH+FlpzKMWiUELUDncE/5OprH4b+iwdBcam1brN1VdxBQilzi5Zr5iwMrFdtMLoLOhw5JDLVghu4O4GHKfxn6+pXkz9Oxab/IusRExom931h8VjaaqvKWuxTkJE7EWEdnalNqSj+olrPbii41D3iw2td/dCgp6h5dlMDIKevljNJ4K+drBu5PON5DmT6VJ3KQENE+6BVBTjXQ/3tkXgf5WqSDp0lL0JwfojGrW6I0wSoRcCbx9LOiQa8N0GvmBco8PlPW/KDtfT0vVJj3bmf97apc2eJVPLniYIuubtLK096ofQVnYuqm1x0qhkz9MmWIjMeOfJxxOkNafoIjI0kg5ndRviaND9SkBj3AZHissAa1aTiCAFUOL4Kzrr5enUR7lYUtRPOA7LN9B99xYDFW53LWJVraVarOP6RLMoUT9BDqymO4CAJnzKXsB9H2pZz00JT5avGK/PmYAte/udpz4Ge5r053aXlhhuu2/hRkASz4/dkvD2dyJvDQDSyGrNPYt463IFyckn521p2NhiHHT9Gm2p4tVyHhYTTb3yW87qgeyJ05hPe2TKqoeL3x6pxL8hkahyoqyPQ9M9bpy/DavHYztfGcezump62sv4Iqy2HOv9rBrcrTbVoQ75WeyYFFLXVDM64y81K32IJO+oM7g8ULgbAbHJMCER/1kN4CTXRzbcvL6pWMlbAPyXiHlu8dXN96j35gmQn8Kt4o+hpCBORitRUxlmNWAg0gMhN8oIp5GsP7GF4Vq8JNQ86WD+X2c4/eeVODgptOaXCyxNqH3lGQ34J0UFQhgxCtaVsSjirNyROkixCEoP8FSpySIuDhMK0V+u4I/KqyxDUcD9TkhBEqTshvTJkOIiaBxeYK0ulF7ZMZBo/OuRRaCT+a7HOl62vNeeqvQpqTIxZ7mgSwlNK+W4jW7SKpn6MfbDxivu65v3EDwl4ivA3EOlXjWUwwPx/8RHAvzvMpVeFCcL7mcLtF2n6XKiXhdnG/pnUYihdZ6qxArUlp/nMcMfvs15B9GfC8c7icjswd0enQvPA1fwmDe5Qh/1aEcfmSOaqpdmwi3Ly2Zp+tVs7+RWRaqq+xme5hvNHlDVUpuTEHp93GsuhC5KVL0Rl78PJuFxer5gpQfcx0PyDcGkr/7YQOiy2NOUGWBJT7EHSm/D8TYW++to5fyaDB5ZbFeEPRpnpkvvbOkmZZnCSwnLnqSLZ5WNS/CROXg2/SKTVFZtHjzyfkFuH6fNUQP5/7optE7vxBW2NeILt3GlGjUywvxZUWkCEjiPiipuLWOnm3VKdQnPp5zuxLVBzrUL3SHG5UbNgGNZq8uY7lE7vvj38UgSPyuNXf9k5GvrnKbevqYYZ+Q5SqtcVDKyqPmgG40YuaKIlsHMjNLDBGRwS8x9QSagQ7X+rNXR9J+QRkroIfFH1PxiaMvBzianOKb0W5dSOLFh0vzMmIXGHyaI48qo5ESZFs4pEcfTwnImgWsFGIYjxIFreHQD3/6byGtUN0Z3lRSqiA6pEFji+awM8BmeqI3xxLPVFyzemSFpqaH5Jwy28rTzZ2PYB1L8MlEsoSPOQSPYUQ1Oxd9D9Uz6DB+TXJnl/ooxwj8/lFhsVRCgvIl9DWQloPooxvBq0harYF9+2jVbKrEisXmFVnnxojLCY4CSwXn+eKshtEf4V+ZlDCqVLzXHzpODqBKYUW6calIOuoO35vOGVrLuS3/c4jsqMOHxZJNxQbIwajM1jeBtdA0HcVYBLaT931YzxDXnfrqzY0xTb8b7j36oSs1D3O+nlC9Z0DIlpEjxGp9ANH9KJvpiLKT6eUAYTh8dY/nUdy2Yd0ndVtx7s8ZizxdQzTs42DUf5AXdjm7PbOpB292GoxAwfWWj3//UU9a2oKW3eY9/pX3OAi3WU6YzA7LA9Aj9Tvb25x1AkodQp6vw+jlWQFKi1yo9VJY4av3JVRapi7xi++KAbz+WD+ViFfzAUO1sjHK6/y5nDh30CQSMTFGbV59zD21YU3oKzTFSbVlZqxOLPp8DX5bsnd3g7NhHDnIDNYkjbU6su/6OQc1ojtUPIW+2Q/VV1r5Sgt5ff/ymTwONgeC5XngVX+1N7DrLc0LSk3Lsgt5GhetaGrB6eKITW/yyQ7QynZCg5J+KYouZW2n7OUmUpr5m5cEVuBQBb3Fqlkq2lwjrVYZplFjAWmfsIxR/AR6msFBjVztjaow0BMviWkjMZA+IH3SaQunxCylL+tq656wnUns45YfB+RIRSgSTb3XomVJRv5dSkeM31kK9uuXB0Lf3e1AZizwZuTXemScIpdENmTePdKWIH8B5EEnFyGred94E/wj6puJCJaAMX0VSBy5LDrPqFMjeuqMF0kFfRAwhjB6XGAM4duiH0R+QmWo5qC56/bTa1mhHoGZVID8SDq8J1+mVBXwpoZSz0lekbStXlxiyuNZHYdhfXe/6uGv25sJmcZYHoSibc+oSrA9CbGg941PHnx9+myDQMHj1jfGHT5bed4nuk9PLeIG3L84gffad31iqIdHEOebcNUvI9u7rX4EkantAGPTsGcavga/7cZi8bKMaVVem+mUzMTW2l/a5kKXiTZd0gOOJtV5eD+dg9BbFoqqXNEyE3oWnl8pFi4Df6hk5hCbrySO/DUL3DQoPm3Wt+15RMmYOEspamuCrZRhpRgnJUiHXDbh0tETqxkvnfcBAE65fMb/VGJrXnAb6XNwqPPSBPBRRsXSmUhHrPk3bs5NulsIteJHpQzMgbX8C9M9qAnddTy01teQR91y0rST/x9tBsnDCl5QiU1gGFvWdSoha5Y2v7LNXCiraQi0jxJDZ5AWr9A34VFG1IMsIbCMBgQy8SHv51z5gaKJRXVtiCwdaTC6U3/2x7Xn6Hvb9VX6GsJgsmQmdGJgFJ3DbUirGvmXbVKj9fzdmofvRwkh10QYHsprqXYPbdG0RQJh6bzn0nit0Q6aaxUQ5Sp3AgtxEwNQg0Lz2zy30oY1CT4VJMyIFVLIHesVGk7I1rRgnqfD4phnI+6q0m2UBy09iOSJYM5ylsoCZRRzho/49AeGn449ASaktLAEdiya9qr1BGzcEiuUESMLa77/HtTjJWaauxIx8siUAKJLeJ1VVFzKB7gnuCG9PSvI0OLEIVXp9Kycd/2pxywpjapt4N//AEpRPKbnsNjgOxwrGwGf2IeizJdHfkVMfKDuwYziLA28uT2JKnDF9FbO85760O+pchXU6YUjKaLH3Pwzf/5tySAJbBO1xIBnvhlfMYXYkrtEN5qCESLluSKmtKAaPdCiPZr8+pE8O6hmXHHSI6dKk+2yjF0J50k61p0dNFXLgNTH9bE/9vFzQ4Zm9GrqVEUJUA7hTyb+ySJlJK6H9g/vc+yazXXkMYT4hZ52AU9nB/XGv0RuxyCAbdRLzHllj6n60GBzdpcV1xMxGn4+tKUFfXlRnZhzRC0hhX6lFzhJFkaT9cHo4CysscevafCthig4qRtVYxkOZC9W20OznVgdlTNdA9h+On+/E7UPK+KjyRWRNcpUiQ91r9kRJkFiJxKAlLXoUOe9l+YCTumF1/3dZgBPNyAXzITYgGCBgaLmEJaSOwwMoXiwr1/VLRQmJCQRaEryQWECxlzlxQVUVg2VdPAU4TxjJupnfPZb/12pIHhkWlTtw4C2t0Ax3fm6kx5k3NvkLVfbasl9ntknFiil9zgJ/b7y3BtEm7oRKZrWLUOoihz0tq9trLVvKBPzXDWI+MCOSVpKvdn7OAcRk7Tbra6oWFGDDdhovTWr+bA4hOsmxWs9K4U9eVSPKKI68cqwRSHBXXBEHNVArpC6r2fwQWbJCedE5U0pnksnb95guIr06px6vEy7rZMwZ5lFOGmZmu/zf/1WCeijTLrv01nckv2gtsF3S2X2VfWSBuUw5IcXxh5G8T+X1Gt+yOq44aseFCA2Wx6oygrAXQ5pbY/UN5waEwyqg6mDED6LzEGndYjX14OXrIcx4ChzkvItkrFkD9bcr+h5800ciT6P48uMdRAwgLAztzOI2S42GA6g1mvuu40CJr4QmMKjnv1xq5Txcf16T+80EPScuM9k47Bypfo8pHUuKpGycO8paZ0Ag1rC0YbMXOLVIMHh9dj1YjP3VHZxI1eB47AjjqhotxbEpgGZc2yt5l3ZEDYJkaSytv+wlbTdGgZh5vR6Brqo9yPH9eQ7aZ8azsybm6rG2YclmWKIEwDvKOF5AZB4alfoDgOagYudRfpeu1hAb0RgGn3F/fOFkiUvxWPTxGr00PdrmwPGEsHUvs5UfDopPj7lxNoL4mKqc2rRIesTzNOWu2sMP4j+l0X+Ris+vUNFTU5ayop0mSlYc2Kt904LwSrBDDbwds2j8dURVPtoYa9qMHTw+PnCtRPynB3jO5rgYV6DtkDFDFWAntlN0WZcV8Ag6YgH2HHRIVurgDwL4tzBllcoWMMw2Y4gvYg9Of0FVslkJVxn4EvYTfy4LUpe2pX/+RtKFJli/bG6lO9weBak532sFSEMpvXLnCR+6SBuNUxT/K4o2Fl291TPTz+xcLQMY8s5EzpmRPzJ7s/YrDmtoN3ywlqlCJrvTiFyJdZe9s4dgg15e1Y0Hh/F8GYrZJcABRIiOoNy6kgnzd8CNmRZsN66k6N/PoCyka0hcmzGHXL7lrorXDD89xaw63g7xiYA/Fbb/fZ0H7KzygfkjKQWcs7t2m1tId5Npk1nJEH1kqxwfElRGqFoJgZMX/aD//eMqNaPamhRnpDnCadsC6R8FGZHv/l/zM/tzIGA0oQTz8fHTvcaI7eTIDWM7VXHYpEk63yoTpcNNeWtIAv+MiIQoqatpkXbGYW7rV8Yq+Xs5AMOBh1A/RRYYF7xbeM8hVARialPelxnoBF7T7u4UDz9r0RIqRy+sZJ/01SvSerQxE5Cspa7+XilFdscqVZywI2OTy6Dcr2b3vxbYAUzPBv4Y0N881GEsp/9BOMR1GPQcub7UodCvv7Nv3fvOCMJahUR7BU96EsX2ybo1QfWRAKoueYd1KVbEnPhO0H5k1xibcjR7kvmKiIqOBjz8Vuarc2ziu81kCG6chcSpYc4gHN8u6I9QQvUu+KRtm3n7l/n20gUY+oNgTT+mkDTKXZjluNohXeq0tHBaBeokv/oyU9YfOjpu31HxG2DmKvF/MjwaWRa/F/u7LwX0WdwI851DsqRFI8+dZEvSrXyxCEfj1Ys+UsGTb+8q3a+xk1W+2yt/V8ocu+wXed8jwKdSaLxD/AVi2OC7YHUYv99rnQjiGoG92ZBvDgfyIG51Wi9qlONCGLSIOosGh4+ebWPLVTj+K5khONF/Y8oMMyfZiOB9jMQrACvOs+NXFAqk3f1/P95cwFqBjTEfnRbYcn6/WXCvmYwd1nC+Sf5LrIaMUfsWzIEC6uEHDbRhZdOIyUzMJ14ecCk0jc2ea/uAKdIOrYLujv4YiQbrUpcYHdcGYTNHPeN9hOL9ZYWinFFx440URO4OXT+GN4tLtsjs1qWCumVcZaCieH8spZcltl2K/d1sQ0cYsfkbpvYKTtorrR2SlUErAKTaEnS9r0sfR4j3XpnRjejc8YiU3nEuzuyrSPLdgPzHgAzaNW9KSQiUbigDQmiHk30s2hqBXpta+nKQfPOzWbNGM0H8QZojdUTRHiInH9A5E5pegiWsxsSYyLWOw9QzUg7HIQXNuyepZVOt+JeLprVbVjEge2EpFaicixXrK3ZJVesuXBm2CSpQddy+CG/HYayOwhSQUdwgdM4j4hhmJhBmWqfN+CdMNDPY3ypCa5u4xT6mBamQsQK9nALLNe4PNvZBkn2H0hICQxGWZYszjqG815wnJqjsRfEjk8PWHih2ID1oaXWaqRuBk8xhNcWzGWQUHwTfoyijpYesiRHzp7wODu5UpMbJK9ZRP/+Dq3ezPh4Gkvk1sRPMKDSvZnFTofCSo4d5QJWvbyRYbwt9d0w4Ty7vrJZPQ8d0C1lfngXZY8+9Njf2+M/FpHMZxO+P3srUCRWgHUGFxVQauxh/mtNVfZnaA4kBidkMRiCiAB7ZzE+k88ceKTleJ6PHedFeXgtKghFTrdF8SAs24viSakLdS4mOP3FFJGSUOOAoh7ZZwbaYof05FHlA+s3/x39B/SMcWlDFt9k+U6JJvj62TgXuaxRfZc1oqg1SU5JkDjkJvyNnxAGGHC5NTDgDoswlcdQKBhe4mJPPXlM4kj87m0Z5lyGOG5DFwGb+i3N/X/GbCFaDj7mNthcXXWIr5ukjpZFbugZQUaJp+kG5EcirDjguNOdbnXJ97nJvnEPULzlcLaDOcRMMgU6aK6TH+XnyURtCk/AbbHO0ZZh7xmldNl35nPFk78DOfpLpc22kdF9sK49+SozcDE332Dtit9V2gpKdWz8GbwwWtD3FHN4rm1OyKDCzroFafiMngcl+05Ht6XZzhHgU7uLqmgF5a1M0Ad8f7E9oxH+Y933iCMzaURKDzdy15Jf0Y90Y5k24gcdEIPgA9ozBCnG9gVy5s7Y8bqUyWNTg00KONz3SbSXyk8RiJQe2Rk7YsCGD1NYH4xapIZGKVT3aUIST/sqmr6KFvuFaMMzEYvK328mLV+Cv7MdasE4nz54t+IJIvhrQBcJpGXIASXDVgGZJ4pyMzTsQhlKYZfCABsw1V9bajACqbhP+ySX2Rp9Nb0ncPFSpseEGZoynsL7ghYnolotG97aaUBX5BEjjKxMpoj0+0t9I7/Hg6wrIm2zmnlEp8Z4t3UHJPFjYcCHD0xJZeVANFZ6xgvqK5sECEhA10vsW+tNot1fKCqevZrnlXXC3b7b/raXVLJqgKyulSPA8c5zBZt4Ck036qC87tcqRkMoG5czTulCsc3vbz3fWP7zzkty0fBFvvZi6ORuKVb6usezL8LPKwi91TmQNex1g9u9Tq12Js7XUoKELE8sEZSl4cDwWjrQZ1neL1tZ2wtgod5fWRIFV2/3sFKmprDvNol00ZkJ5CcGpzmSs6GFd+0fx95mmaareEFKJr4XdjbLoa++GVKl4Jir3M5STsVaTSnxlol3SeH9TCRykcHlt3tILqbqN6SJQMSfloKW4iiE3sCkjnRQkpaKiQIBLohLykleKgDDO4p46zIcrJMhauZGafbxp27b93p1W5wmpX5d/r4bAKcPf/hswj2Ik5FJCKH762uqFP8IKuFUcE1RoN9SZPf/sCMSrMINl0+/3Cf9rSJ2gomfWzkZm+dbW+uLzA47j948jxN/ate7YRvnHNYtoDydqV4rOKQ9HwwS92Rbyw+yL7HcW16qIbUjqSvW4X5HHcUkRc3WHEk3pcU6Ge3JuHZvWLGi62BZpW0JI0kSFSjGnx2iQy/cKd+YysgVEuLLi5J4E05c75axBgpATaNS2XHVN0TM1NCrRnKRMWYxxHRTBTwTS2uX4c9I8l7AxarpDi78WjVuyGqjMIYPn+9l++YD4dFkWKmpLiMhof/66DcgyBUHM4zjBxFh1v9y700m6fl+nsildmKYPmeCC51+RErjH7Z8lDdvTHGUxKUuFF8W8nu6XhnhFyOtn4iXXqxiCeX32xSRNJ1Q5wsGEBV7y7m4EMAOywAbnhB6CRJurNsh+5JYsr+18YHvFKbQ5vBaRzSiHD0PMLylV48E2a8xkVBcZOvNkr9SfiBl7btEGfyekXzFFx1DmMwqzKb7GOh7M89jDLX1dEjFuX26lMWJF0VpeKYfI2TUsA0s2gjrEIXG61xSYYHiD8MF1z2CwUwXjZEKRUwMddIw4S1uPhIgJpNlSbvqbwwus7hd6suHeA2HEN8oaIVEGBB0BB6VpZp/hOxoORYsBFVpRLyae7OYRZlL1agHLHia67+qyyelmomAZnuXXrtyDD1/RzCRJgOKziqFRfIFvan2R2N+1tDN53DXvLkNvCK2GO3ctI/uM8ewnuK6fxAIKqexXHSdMQ2dygaEhsVoS0TVyFzZEobWF4b6TqfOKXq0gBm3jVRd9+xm5eFGVNwnPtr7jf6CJ7HpJYMweU+7lgPNBSqTnHOnBq9mYdVF6m9Trk13E0QoBWxloIdLBEs/eNp1m/5I+GE4sVPSQMUqGH+Oaa/7K1A/rlHIXCiybRQBd/hSpNn7h1fAtD8efmN1mktGMcoD74624lCBEfnILYGSvPF1MdEHqsJWf7+6lk6SKkI4+DXoe2km3M3AzpPBJJ4j2V8+nua5ACFhLl0b1qdboSxb23ZZ6lbHihLlj4pjdKjPTa3WjUSBv4dG0L4ePDNl+Y24Y2psSlhaMj0pYLW8RBeCGFQ8S0Efe5K0NrO5o11iuTxdXl1QoGZZXy0vjthTTtDXQFd9cnPNTf7bGfNpOVabSN6NBb9zYRnlXpk6WZ6xfwaeUJfABuZPd9coIicpZbiMjnXthROM80+9Bop26CsRugnl41kOMWtHUCS6wXcLWmTMMvt7npZ1JHIV7LbrEVkqQ9C3iFCXbUSbwH+k0uPeDj2v4lid5J84ouoy717g2UpI6MPuYnWCpZwDygbVYZLCwDo3qQqringd2eYmF5FhLG5LLPfejN6vfGt+A6JWRyZGfX58LZhbjjyXy1UEK0txgs4N2SHWws5GArG+irnQ2fnhcNDuhSP2e4t9aR/VGmqIJR2oDTHlOYXvf2HOU2OP2H0+AZk/ulCwbcdyjGi87u2Y7Pmt0Usxc8AAsDX35YKFGK7l5sVbqnjApfVE+XA8OAUgdeKdXXIrfPHkRnwizh3UdrnM/w+RPrjrKyHKQRMlRukMqO9HRqZGyA/LIt/t1xO7N4NP4Df5T4n0EjO9NGlfb5q0dFuK3DV6dQOrM0XyVF0DBGnxXNTJ+nXK5OKhe+TI13cUddut6qxfODWa7uomI6KMsvIeCEDrbKhvckFQc6wKPV/StMS/0bAJVY95uK0l6sLVRT+khhx1Lt6/Q45owrHJjE6jjHefRO6V2gS/voTlYDTJKTOjEXJuh3UfYYbNRRyGUmL8bTbVFSvZt9BwRUKW+pNBmCg2Q2DCnoY4cGz5s1l83YyJSZQlav/wCBdEVJv2UQUbC1sVTXQDHb2cp8WBaeeB0H+QwSUxXaN1tdnHM6+rh2hjPgtJ3tSx3HjgO08x0YjhiNkJ2JMn6Wkg3zyLoHiMXMrO6bdn+J0ki+McdT4SyAmPqHbsqoZ/Cy6EhtNTWJluEQOZxcRGdDK09jKGBl4dNzSRnxsUmodNxmguOiPeGCsfH359/+vEHSi3SWNF7blJCmwpztuBVpjFxt9oMQi8vrxtQjW6G6ZdZgUFkvSFEkh/pjAUWTHFHdlnhLuls5r7V2HDrTHe+o8yAL9ooXLN/ES78nSW2ACkNK2UuPGliK/fsmc+ChJCj6q6Tq/7qrrUCF11/vFqgUpcqLtzogDWDEYXFWcHu04fUFOC5iRpiyJdOGJJzyQU7TtRItgvgbMpuFN8PSXvdlYOV0Rgr+Sywf1WnoepXjju/Lfkn8gIMtJU/98cKKI5NfoPHSjDAwvuX0p/jMnHL+DEj66+PsttaENVVWfM0DBY1WFw4wdnKkks7YI589IEc+LvAZW0P/tpcf+H/fwvcoFgjSgZehtUvg3fO5dIrrv+pTfYXDuZXku+f5HyhVe8G8w8jhlCzTx/PeBZEeOqazkNREv1O82h5eBtyDXqZsoRH0rO9YBTR/m0YIkLM6efbmFhTNJ6J/ADQkLDNv1nxqTl8IBO950JVXvsqUH7Dem6N7HfOAlxS3kGcVTYOZStx5aBSu1HsattxfDF44JBdLu9MVmhGLFhNjK2Hk+ljDIU0y37AQ0haJ0e1GP+ttf5QM5B1pp8rbwQrBhHy//E7uwdfmUrKyt6VMx1a4NKr9sP6BO+VpfMSBQvgxb7IjOAm+H1ZrhN5FqoQRLi4QtAaZS0HaTmtzp8Ot/7yISSdBcTNWWflH/pmjnqrRix4MSFAt+ndks51yHGTg3kN7D7uBBRuf+dOex9AxHCm+46iNCN0p+kICBJVPRm/RPK2OFG97ZvgyMh54xkht89gBLAgLIB06xJFvRO9I1xHsVcMRBExPkpScN7aIZ5l/BdIN1AYr1f0xcunBsn4iIsQeEelxgB7jopCe3Otq/AYiIKV/u9hLqrEG/zYPu1jecTlMMsjQnpFCpk+Bn/hntXCwxHQV/jofagb/rN5bCpYX7ZbWIDSsD44kB+1h+e/1gfeW3LOqErddDEYzIXdtVQRGVYfu6ITOMFc2VsV0VpApSmGA9whifTF59sKbmPCj9NcUE7Wgqg2jC7nVprZYdTUYB+FuldAj4JgW2GOlqTk/5KJIkZVF0avQEwx3YdgkdI7t44Z44uDwOrUc6rDIcr3ZR857YgKX00B7XWOL+wfH9bPEq7GqXVKUf3B9eNk89F1rFYMShgtm4lNIBZPWDy6Mj8LPNMiXfAfV15u0dhoaD/+PYol07dnhViNQanAfmhbmCH1bB+hBSGVJcaglGhIU0H2JLYycg73cVSCBGPoKgtx2ObWe55fi9GXiO4RSqwHfFKmWrgz6TArSr4wUGIVF5olFhImwyfDBgIdct2hX/SVGqoCMpEEZTOHQvcjEXI4LoQkBKDJwv63cO+Qep5tskDkQYRnFaCGu6kx8oUUeFvN2HExR1wKqb1smWl2t906rFSzpkUz9Njk2bEVWJ/D2Sr2/IP7EG9WiR/JyQi6f0ItKeHIQ3pPiBLDRIPoifb7cOD1+N5gAeUCzXRyfvRvU4Ow6xag7P08K7Y5cb1Huwkxtr4oPhUWV86BiKWKmOgobbyJp2z5sFCVIrmcjawgxPeAj5BHkkRQtmuqn1wyVmuW1ojdXB7AgClDx2WR4z1X08VKkQT9waZMXTOKG6GyO2hgpqNxCi91/RmnbSic8546pn7BcCeeZqQaAPkAIB8n2hZAVVwaG5sF3Eqg1needFM9g+uE2/xiRq8ZiTMMQNDn1YtP2w7hUo/hek0ZAet40v7DLlXM/8GFtZhOqy+4XWzU84s0ocfYTSzSv5yWgaBcKB7b70S4WEGmNFOy4aBPUZrl7CDlul9U5aZF0ZujMH2akq9O/DE4J9BBPJC/EhnkqiLKRh/24XPEL/p7hm2fcDSOQ06/Qzq83Qa/9c1SI5UtgD4v4vdFEsVDJR/vFDY0z57Kr2nxrVXpf5XyPKBWw1jftM6q/Wb8Ovou6qgzuJ3m6B5zc+zOEkAvDC+828Gkg0v91QfXK5sPqQuJBubaUvuLZ3cdV6UjH3eFyYkymQLkUyJuPLQjGF8Wy2gtoVQNQZD/8xOjaZkxYoip3GR+1Fy5Ib2mxzqaQ9hBfSkrVpYSI99ULeWQF4jd0RoGPTiHj/VcCbT42TkQ9oVTNxyfTPkU1TgEcZDE7i0nCuNSLjEttck+e9NqTHbJ7YzVP/cmN5gwNDnzBBJOC89R7xP0jTnsklB+Cus9uRpMYTtRyFvGIPxsDjJhsLriLeSTBDaFz4rK8hJd56b0zvuBEuKiuULGPnPeiLJiYF8ZNIIGQxiyb/XDVzg2csEf9EJGgiakRXoSt5OBHQgIcHJNUUxobHDK14p+14+tGqWyUIP1lL1TjbXooySzCOvoYTYCJ9VJgD8ID/chzYWNlHLB6xegnXhdTPRz4v3E1Q25y2v29u3xkdYQd9RhNWQiygn0+LqNg2A3rscAEdxrbnIBFoh5PDkiZtkJkl+DevBDUwMZZFNChdpsiLhw/tYBdDoFteZoUX/f74jy4xwV5iVR6ev2krsXmzpQNV9XeNrEx15UmeZbpmTiMyW2LoPp372Ib+mp05U5ZhYyZPkDSqzFe78L6if/T18oNVUO43ANxkKUS+/Oclj1m/QHQyXnl4WLUklTLt0H+NO1c2RrCG9JFozhV9cDiqpCSJJtQeZdKGmb0ef81NP+DZoolf6s3FQ24b0VrrpaOErJvro+bbA/D9Hp9LVb+yXNUvAjWNTdXul4Siqrsw7OyHcfrZZKQ814S0RWF2pzIVplU5UqQsTD00ywgMBe5DTrr0k7aUAwj/OH5I0kS7Cm+R00x7UPkVBFXK0vx+Cjl5+CemTq8IWs9O6VFkDc/Tym5wDSa2UJ7CEAamyKbvk/Pv9RSh3vWteaRu9p0l2ItkF7l7nZjS6cZaIs0RrivY5q+mzdg2AEUB5G4vo++5Ht+jzqC6UItTxN+TGGR3cCBGNXBqMQq6twHugzNlyWyWmMu+8rVQCgeifze+auWeiF4zZiRmF8IwlipBBSAJBE1q3ohGkH9eNksBXC8CfTMCOZiovS4gCZCn+E5ZGLQRX4G6M6YIyRL3fgI/OgDMbxIQtDVfpXPzA9bIMgiEtE3k+I+8YhXGN4kQs9EAaqo3/u9AneLqIQ0aSfOhWNPoDn1iH3qcmdgn3Eg+JF6CXVEOV+xv/9beUfgS9BgJJ39qKSLrMQpIgyuJqTfnMOQM1Z1yU9UqgAxB0cMf9xP5UOap6KY5gqX6beCH9nE9aEmOslDen+oqREFE5FTEmXwbot6FN6UPF2/Ulb86AAo9Olhizhu6wUbXtXgg9II2RycGZYZAkf7BJEB+3yIze1JLNBqJMkWRU0jEyoHEc4TjXfeComHla+5wnxpFnW4fBHaToAucUuUXKJSwRQjP8NcKdpJgYYV4CisVATza65mj4xPBbq/6l2K+MihTYMnARgV0C3sgfr6qXfWT81sh/WaJl4Rd1BeubMs4JY80wyL6TbOxyYxwiuKvKKiITDnMT+NFTwElvGbeiEfxlRtEZmsfjrw89ebL2Kg+Obt07jdUegpx4h1T140M/3suDndanT/gCG0lD9mMduvv37R7NG1GX1qg0xuTL8aJ5DsvKJeIxsfNIisMXtYA1I48uxRku8ClGb5qDnt6VIxCEVgowIG6PM/2bbK82BMDw58nwI28rP5PsNHXWsKRbr1aHVSnzU5mJQflThcLpRTU64H+gEYTWMZcfxdeLAwoh0Uw0c9c1uQU2UT+7+KKCXM4HADJ3TXNouvzN7AxmUhmLrxpXvhPHp1lbhTBxGTqDCW2Y/ZNs9ll7yoZDCkgg4xj0CnZqy2cgrSp+yZG59FGyVaEaORG0WFV6//pgkkZRuuCzWs6ReQG2SeW63cVhAAU7J8sf5D8YXfWz7sBxEGAJAUM5AUKG2pc8csXgZgZmpuhYXUpnqsI+F2a5Ezy+uOdrapwWAaYDD0bNqi+cW091hjoupXJMKO0olE/Rvbp6khH69ay+poNtRdjhK3bhrNivH/P3PnlPXXpEM3SnS2ex5F8DsF7i8SfrtEyofsU71DF5SocsNV8YgnLda7vgRo+JtFZu+IOXtvPsOdc99+7swEDYKfLxPvbSNFnD3R8aaM+NtQJpmrmA9uKq2lpuUjUxkxi3x1JwDO4NEgmXB0K4VU9a4lZ8ietlOwAQpupANcQ+ZlxFWAaANSm2Qlwol58//mHcm450rQ6miXHW6o4kdYuoBSdr1j8OyA5qBLbjugcIoPP2yooXmmeoRI7IOrA5WFObhENqP5AJkfsATWpKsNngrtK5DBrVn03yKfDCQaO6S8Gt3xjqR3l7OFJm2yamxzg4XUk0/7gWrrUVjvvKTQZKb8+EpV/FJuJ5rg+sLjJTgcejELUCQQ1V8uFJejEr5PCi8GjYgd+vjbuszM9ccxfpEQ/eHr+etpwK7GxarvAOjjFsr/F509+onuHAav8xpW4I2AIVUZo/NneiPh79Bxv40hZS2cjs5JqSNXDEu8F17ELzs7dOUpVnLY6V2tp8yG0ZkgqEMptvMP0hIo1ygLrlaKW8CLX7srFsQdLyMBtxY06XmbjgOuaGMZTA9a2Rxpzhm0Ltt9zXvUwdfYyK4AgWrdNltpPnUxMFKjCtN0+X/TSjpOnEHtuK/kenx1zsSPkgUYR7GE7aH95U5Rscn1sOVFT/2JAKUn9jC1AMvXI2usIxDDtJElY5u3++Zspbn4h222XEV+/iHde2cDT98UIOL15YxJOb4SrzTuMjL1SjeViQ4oor+83+VJP+V2PajJ2m7+yT8qiFRtCox6iwR40Nwr0KF+/UcX40OhzvyCt9Q4WofFBgTp75/PhKo4l4B5Z0n/DE8VAr4s0IGmP1Q4RGicxK4yGdRCJzme6W6ELEN9hYoUou31t4tpKim/KmJUzl+uo/BLJMgAbpPW1YfHjbQF00v4ygNaxlODjDKtssjgDUb/bpS0E6UBITOcPgBDm8DnO6IoYobX8Q9UpUpEmN7Y9882BuslL4Gs2a2SiQoZfLgf4G0zCxe+BS+3XrXttMkabk4rE5bKbwEhuw+df9fm5oxrrafp1RDyhuAJK55x9hh6RwB5PMwP42uMoeHhEYbKx4fJLKGZ8kxM2m6P+fE6q1vFzSRJgt2rGoLyVTZ6OzsyT408bRJ7C+3umMLWdcuA+0ukfyH1KQNprLyMgiyPiwivl87nRW6FEyzaHPMiJ8Ph8ZEgUBZImqRFrlxAgBjUNa0nH9XdqVRrqWEONiMDXNdQjDxUGfdhjtzV1hjNX0SkEIwdzXjz7hlfCOZlpYfQen9gAvMUd1HqyrKQCpglSO1bijGiMnxsdaMoJkqJ/I4XQJFFVVJ+9S6FmcJahIzIugjjP7KAyD7JT7PffU4vLQTB8D/7Lpc2ojRw9Dwy0qW9/Dchr8vaxYFlofckxbd2DZ2Oxl1cjWDukxVCJPFo8XdWdZI66WC071Dm58/vHwL3t45qiENB9RFbUJYTqOY7l3LEh+RB1f5OfkcfEbMXoc9ROLjh1wuRdUQmCNI++rAgQOjthcKx7gfqyH023KYhQqg5bTI55Dc47Bil1OLRIM/8fp5fPCU9t2tC6hWn3BN7FCHrIefPiA9avujiVdyRAwqMFo+XpfxQ3vPEbOgwaz7n3TlriviDsBtxY5Eqre4Lz27lT/dBdjxWD+8o60PIWQDoXlOxB9O55FJxYafRGN7rxr88oiRnEzeecajx6oN7s52oFpLklCj3wE+kyrmgwd7Hp3E6aW9slUmlO6on7uiT56evY+9QQxSSAEPDJgjT1bR9kin/dlV6s6McSPfaCsiGLgNZ8hbQJr09DyAXZnXpSk4rht2+PnEwJizltjCDVc6BD1hAbEYbH9if2EyzVPcis6KQIhACkdLGXNL+Ec3wQP2RxPcqcmdcz0Y43M0YPy9uiYEJZymdJSQGfe2A0SZwY3ipqOMQT1e40HMOlOXbKlgHRVsqLjtRJvAb4UWwCX6TBJdxqhjpPYlI19D1tweSOIv5BLDz98IIAbWrnu/WizymUGZBK2hw2v4XUWaDU3pLTFjfOLjwixRPhb2rkUbOkkJStdcoicmU+SZlfeC+tfxJAslg2xIZWrrwoWMj05xz+vKdFNTv9ajda4qTYLMTxvgHgSFV83mZuISX9Vv5ATK9r3orqYiqmQ71Wg6qvSQQGlCJlijqQPPJZ4Jkzwonsollv/AXuv+//rDJIvV9HE3qMyyHbKKkVS84n4kFVIx8L6q+HbubyxSps+wdLFyfFHU4BpkNW6rodQlN6Tr18hlC7QOQvl3cgWW362C33mexgbdXH7h9+2HqTMNswRM1K2f15hioHYHmD9wPH4CNmOIYUMB5UDp382ciHvnN8nU2JLXJSlFb1Yai6mhVwix1B8L29PpsQ05U2KtWSWwJ+T3VgoM+H1Qdi1/4JPXIoe8Pwd6bvtkc/eAiQeJbUqfBFzFQAikINmu1VAS7DJi2fWux9HqkGfkORu5ZbIyE9VOiKp+cDUq5HRmxfTOqUtQ0kT4s9/es7TftSPo/NHa8e5HrgoWcXl4zibXe6GxDQBOawf/uZrdeWQ3dBf5CoUxsGEJsYJ0aLMD5+HmR3PtOdZBS4o87qrqEl3WsebaQCd9xIt2ZhFz0Av2VxN2ivpHjAu56ieLY80XTVmNzF9k2B6WVRsnFIFRsLd9sr5fp2HUVgbDg4PAkgO6iiC3Ybse3RnsR+Dilp6K/bRoqs9hc1TKuBYQOSv0pXlnh8LUfdDln8o+9GI/i1l8LJrTD1fDG8FAVWN5gwXJ0KnuHlLdPHzsPsopwUAGAG3QXmSX//kppmDwsMM4hfhQhn3p72UEXwwcZ859sNi0emeY0JfdY6yTDHfb0ji+5exmHHJP5x6cn/DQ2A9VQTi5WfbBUrWjv6OckTnqTpdVkOTiYiOGoEuIp9k5lHUD3d969yfQsQh8Mh9yDGztg6hGTV6tslMFHbTh5jUgZnzSmAh/kuF6r6zsIoGVt5D+gHA+uIFEgxOxsWl6P/m4jrSYso+CY1kZmHOcaF8E8B1Rcr5NyzrJaUHQGHyCe/pcntWa3jje1Y7VpkfnYiaI511EpNiOra2YFy5QfjFFlFU3blLcxT4lMOiXdjLEaWqrH+dZWF59avSm8ezbnWVT3xITvDN3GLSSzgrdwclUUFaPb+glhlIM+y0p52ZCs/OC5XUYmtaTCWq9M4OuFPxaGb+r+3p47ErzZjZ0tFkAaQq39yldg65h01bmK16KFQOxywkZSs6vflYRkW+DlOh6LYJpXd8TMtaIuEwmg28MvYzXHj83DQ8XADh69E4QaRFcATuvWTnquDJt+SMITMuuwWMO/3Jg0p3cCdYvmvnmj7uJJdrpw3CxkEZU5LqqjTBHlpZGNbuImn/J5ggzpvRNbA1jDaoluzO/cLzsg9cxgRpIBvSqbdP0/jItv1pii2mNcztoMVp/+ReHTiIyN3hg6in+AL2cuDA3toA9DX5dIyhxOBhwowg8vlyokOPlh+B0oiTlaKh+czx23Fag+W6cfQRNUl1rQP8H3fGA9zAj8dNVeP1GtDWQS/ugBqe18tzg3uoAEAT8b9c6BBw+pwhY6NTOnQUjsIhhKV7tKpWdAYfjuvaLQxX+WsJVMT7V0prge16nzLJDoDzEPdRzn/IQzsqLceKXI4Peto+aUPisBi5nW9HQffvHB33SYPHOPHYmmHkWY2HwaKLPqipUkiUNJzuQ+l9To2uMx18QRUf1eyRryCSWjnUKuT+5lF7R5oGHt0m4f3PH/heMWpKcbQPDB3yoGSKpqAgkIIXRQ3Eypffsm21AThPnloH83vYnLJRLraKsvccTbaU9iL+edJDwEEsUW+1g7ABwFPOe/pBwY9zVj7P8qjcj81Tt719Yj9Xok+nkWzUM5oTBWNah0Erywy5iPzxn+ia71MRUH47S4YOLt2YMLbjBQ9gBTdNZcqovuhECy+c3HgZc+sOhy0xmFHSeYrUwKNLLb7G8s+U2Kbw6eK9nmny2iedT18jGNxYILcPIYo2TBOuC3FWqxm8i3dLW5lS83rUoVCe5hBelRay/d5GxgJiORYPk4mgOtIBv5xgXksCb+WaBRWbT25fIsh9exT4bt59xq4sKxJLySkFYSYAN8KbLSVGha9IwK/I2VCkD2Flp83jKCqMbx2DKwdo+xfrax8YrEHW/XTaHrJ87Qd0te1M95bMJPk3ANdb7WOlq8XL60nX05UQUJUVTofwIaYFCV6A23iUZKNxRtgzLEM5by7f1s/4TEKNbqZlqfWrTAgkNw6ig2/XqC+0ySEDupIuDoyZ6U/+ZUrFLFkb1W+cilhzuMvE+8jNssWNDmrZx4dWUexnmyOUWU4sASh/86P7k1DVqkGbxh8EACwyK9z8XTR7ckKE/oLiDy3MH1yvb8I6hL0dW+9CS1BpM5KD1CvOg6EREOA1XRV4I7Aa04rsqRPcM9d/RAYBAZIiqTaGdrhYuckvbqs2zQjlFb9KF0kdqbX57B5UfTAHYiPrBIxBoNBre+QMqWOXdBaHVmuo2/XUwzviXgT5akB6jlkMwxuDTiuj13GDgdQvI0rkOZJTVY9bj6aODH3yFj3+lo1YSh+k7q6VjCYSGLL9isY5UMcVbp3L6g2aCTLxaW9vBHjCObI/JcqD2RJow6QjfyXQ4LuwwmBGnBWmzVh07ritnylfWc0wmyHB0xHTuJSRJrsPP3mA56Qw7ybkPX7VyZhYuh8u+uSpgKCtKFdJkhzlSHMqBI2c9iCrWBayKk/8roy7NJe+sK6/V73HWq0oZV4OKygewJJt79XZYDOZ/b/ruqHSfFvwpEHWZkWpYy2+aWzwzgQxkxDQXhwX6lteME77f7HD4bdNXJzgdbVJFJq1YOwsZly4HpNlXnCmyXrIfztNNGiwuyjXVtrSEwKDxylO8ZwVP5DnjRJWCScsPOkTVt8dadeZyDqb1pFXK3SqoFW02lFBMhjH/TrdgVo8SXMspor8gDkkrnV6QkDij0MBlFBtdsn1OeoRsndSL/rB255WQPCdzolFbFbYjpMEQOC93n71RKBumXCVtbmtlvwFVaTmyfdZi/MZvQZCYJNFtIkI1LTpCd8DYu5HYzP14Lerudjlyv//AZoPg==")); \ No newline at end of file diff --git a/package.json b/package.json index e9f9b10..e41abc7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.4", + "version": "2.0.5", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 9bf7745..ddb1e76 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,5 +1,5 @@ -// Hprose for HTML5 v2.0.4 -// Copyright (c) 2008-2015 http://hprose.com +// Hprose for HTML5 v2.0.5 +// Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 diff --git a/src/Loader.js b/src/Loader.js index b0cfcf8..ae831e6 100644 --- a/src/Loader.js +++ b/src/Loader.js @@ -13,7 +13,7 @@ * * * hprose CommonJS/AMD/CMD loader for HTML5. * * * - * LastModified: Jul 15, 2015 * + * LastModified: Feb 19, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -41,6 +41,7 @@ global.hprose.client = { Client: global.hprose.Client, HttpClient: global.hprose.HttpClient, + TcpClient: global.hprose.TcpClient, WebSocketClient: global.hprose.WebSocketClient }; From bc1e539cde4da1c8a2b39eb4304df8b99e1f4e13 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sat, 20 Feb 2016 20:50:27 +0800 Subject: [PATCH 06/86] Improved setImmediate.js --- bower.json | 2 +- dist/hprose-html5.js | 2 +- package.json | 2 +- src/CopyRight.js | 2 +- src/setImmediate.js | 137 +++++++++++++++++++------------------------ 5 files changed, 64 insertions(+), 81 deletions(-) diff --git a/bower.json b/bower.json index 6ad1fbc..d9403e0 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.5", + "version": "2.0.6", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index efa5dc7..bd32e77 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,4 +4,4 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/package.json b/package.json index e41abc7..dea18b8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.5", + "version": "2.0.6", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index ddb1e76..c38de38 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.5 +// Hprose for HTML5 v2.0.6 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/setImmediate.js b/src/setImmediate.js index 8d5c66a..db8b555 100644 --- a/src/setImmediate.js +++ b/src/setImmediate.js @@ -21,23 +21,13 @@ /* jshint -W067 */ (function(global, undefined) { 'use strict'; - - // @see http://codeforhire.com/2013/09/21/setimmediate-and-messagechannel-broken-on-internet-explorer-10/ - var notUseNative = (global.navigator && /Trident/.test(global.navigator.userAgent)); - - if (!notUseNative && (global.msSetImmediate || global.setImmediate)) { - if (!global.setImmediate) { - global.setImmediate = global.msSetImmediate; - global.clearImmediate = global.msClearImmediate; - } - return; - } + if (global.setImmediate) return; var doc = global.document; + var MutationObserver = global.MutationObserver || global.WebKitMutationObserver || global.MozMutationOvserver; var polifill = {}; var nextId = 1; var tasks = {}; - var lock = false; function wrap(handler) { var args = [].slice.call(arguments, 1); @@ -51,20 +41,13 @@ } function run(handleId) { - if (lock) { - // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a "too much recursion" error. - global.setTimeout(wrap(run, handleId), 0); - } else { - var task = tasks[handleId]; - if (task) { - lock = true; - try { - task(); - } - finally { - clear(handleId); - lock = false; - } + var task = tasks[handleId]; + if (task) { + try { + task(); + } + finally { + clear(handleId); } } } @@ -74,6 +57,25 @@ return nextId++; } + polifill.mutationObserver = function() { + var queue = [], + node = doc.createTextNode(''), + observer = new MutationObserver(function (mutations) { + while (queue.length > 0) { + run(queue.shift()); + } + }); + + observer.observe(node, {"characterData": true}); + + return function() { + var handleId = create(arguments); + queue.push(handleId); + node.data = handleId & 1; + return handleId; + }; + }; + polifill.messageChannel = function() { var channel = new global.MessageChannel(); @@ -97,27 +99,22 @@ }; polifill.postMessage = function() { - var messagePrefix = 'setImmediate$' + Math.random() + '$'; - - var onGlobalMessage = function(event) { - if (event.source === global && - typeof(event.data) === 'string' && - event.data.indexOf(messagePrefix) === 0) { - - run(Number(event.data.slice(messagePrefix.length))); + var iframe = doc.createElement('iframe'); + iframe.style.display = 'none'; + doc.documentElement.appendChild(iframe); + var iwin = iframe.contentWindow; + iwin.document.write(''); + iwin.document.close(); + var queue = []; + window.addEventListener('message', function () { + while (queue.length > 0) { + run(queue.shift()); } - }; - - if (global.addEventListener) { - global.addEventListener('message', onGlobalMessage, false); - - } else { - global.attachEvent('onmessage', onGlobalMessage); - } - + }); return function() { var handleId = create(arguments); - global.postMessage(messagePrefix + handleId, '*'); + queue.push(handleId); + iwin.postMessage(1, "*"); return handleId; }; }; @@ -150,53 +147,39 @@ }; }; - function canUsePostMessage() { - if (global.postMessage && !global.importScripts) { - var asynch = true; - var oldOnMessage = global.onmessage; - global.onmessage = function() { - asynch = false; - }; - global.postMessage('', '*'); - global.onmessage = oldOnMessage; - return asynch; - } - } - // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); attachTo = (attachTo && attachTo.setTimeout ? attachTo : global); - if (notUseNative) { - attachTo.setImmediate = polifill.setTimeout(); - // Don't get fooled by e.g. browserify environments. // For Node.js before 0.9 - } else if ({}.toString.call(global.process) === '[object process]') { + if (typeof(global.process) !== 'undefined' && + {}.toString.call(global.process) === '[object process]' && + !global.process.browser) { attachTo.setImmediate = polifill.nextTick(); - - // For non-IE10 modern browsers - } else if (canUsePostMessage()) { - attachTo.setImmediate = polifill.postMessage(); - + } + // For IE 6–9 + else if (doc && ('onreadystatechange' in doc.createElement('script'))) { + attachTo.setImmediate = polifill.readyStateChange(); + } + // For MutationObserver, where supported + else if (doc && MutationObserver) { + attachTo.setImmediate = polifill.mutationObserver(); + } // For web workers, where supported - } else if (global.MessageChannel) { + else if (global.MessageChannel) { attachTo.setImmediate = polifill.messageChannel(); - - // For IE 6–8 - } else if (doc && ('onreadystatechange' in doc.createElement('script'))) { - attachTo.setImmediate = polifill.readyStateChange(); - + } + // For non-IE modern browsers + else if (doc && 'postMessage' in global && 'addEventListener' in global) { + attachTo.setImmediate = polifill.postMessage(); + } // For older browsers - } else { + else { attachTo.setImmediate = polifill.setTimeout(); } - attachTo.msSetImmediate = attachTo.setImmediate; - attachTo.clearImmediate = clear; - attachTo.msClearImmediate = clear; - }(function() { return this || (1, eval)('this'); }())); From 501fce08846e0b3eaf3d66e82842493d1e24d8d8 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sat, 20 Feb 2016 20:58:32 +0800 Subject: [PATCH 07/86] Update setImmediate.js --- dist/hprose-html5.js | 4 ++-- src/setImmediate.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index bd32e77..9e8a5a4 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,7 +1,7 @@ -// Hprose for HTML5 v2.0.5 +// Hprose for HTML5 v2.0.6 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQAvBgEAAAAAAAAzHUn/qWH7EwabADPIOSfRKQfDP5PS/WIum7zHAeJQvA4d9n4POLH6lJgsLP5QlqVDZXChzavjIbyDu+IMZRgJjRkeO7Zf+8FbLd/v4y5knW31OfmeQj7s0YoUOMF6krkyS4BiP7mSKlmmHj541GqWqc+Kb6Vt+wR1/8GSKawin+FUylpP8v7CNFC+mDCtquIESHl3lqlmn2vSbLEtoXUZ3A+7utGq0GX6Y9XtB4VKcpyN9UQK4uPaSEtgFxZ1QqTYmBhiUtrpn2ErNUR4EN/1WcRPX74XOVKdB+GCyE84fay7OgS5D0c7TG2uAStvHjFbLCU8a4tNT3+khscwdF2MqlxhRxI/YPjVXb1uWoWT2Z/YDeEV/HYvlLqhKNsoQvwbxAvbfqPuSn3NUFNnw8XREsFpnhJrfH0uBGj5Ng9Fi938fmols7UhTchrepJ4EjhufAtXIbjkvyM5IIillZvQVvcvkFOfd597yde4mrBAX5sWaEv8yfKTL8d6XmWfedkPfhrCvHPgWU/st552lcdaFKh5AH9KhYY7IGYouNWo17/t03FMzG1XltP6Z4cxmQ3UKLtcVmcdaSWVt1s4n/XtKjbfNCWuneYu2AuUMYKhGUQLrOX1FZTVbWtYclHR6cb+pAk8Wuyxpv8o9/Q/fI99uPF3Itk+V7xjXgyNNvmfVWHvYLlne1m0tYEEQSJTjZsO/OZi6eq+gC9kmEs2w4gegbHksZ6xEC8VZJRgu0EKtXjR53oT0eunfC6PXonBkDlL4GGdY8EJ3AgQWj+IgBQ79BWMLc+mDQ0cnleYlfD2r6R4Iyg9Nt5BCVjFiJNNL1vtcAPkvYIQo2B+Wyj+lQ77mwrV4NGRPQrl4I5AAhf+hoFYl5H2+eTpohUMwQghjdcRNDay2YiHE95XHdBIedtQ6zuKIMffcRZptT9kmQiuUtJ4fP61aL8HQm7U9MKp9RzmfuSskHt4Uu+nTDGvu+vfsoDReMPGCokLDUiaznGmOygxP3kznjna3fAZctPjWbuozjdZEb3gJRh2yBuEfHjsaYHRvcIXFoDQ8vmMTYErGvd+bXdgu9vRzL2Ni6cIARqDcE9CVxtdqx2tEOXQtub8YfVdy6n8D8MbsGFRcgHXFDVS2wLvp5n0+krB/PunmoBN6e81JWWldT6aIaKbRe0KsQFv7XO7Wue9RImoNdwiOJCpX9TWX3mXdXbr+LXQgowC0mvqC2cfPyw21CfmvYEVPNcAtwQciRWnPGbtXyuXz59hpTsGf7YuTJOhvW6+FeYUyxiPvsjasxY4KfXRPQXhncvkjhDOiEjhIQuDdNu3Hst6RS2nSDARusfaVU8j7hAgbJR5nWYYWl2A44RH1CGFfjIPTRsvaFXhY/AOyb92xqC17V1jrLiQXOT3/gXJG1dVk/rZeJ/M6RqLPggKxS7yVUDgTUHj6uXz3H97Mu49TsUNw0Jg6IRq/JAYu2b205sHldf5xjxLU85tUlEB9kshzGqN1LaQqIo2XKB7G5G/KXUXox6ASYus9DtG5M24jTd9H0HZC3R+3vpu++W46GKm0uMRrDBjaA2le53XB4rNbr4msaVKWnBHEZbQCFBlmvE9tCuxaCg9qMpBmEdjz53HLgJq9JmpoEtZZqa2I92+9a02fhJjjfJnwELGuVLAJsUqmR8cDXBynWezvm9OnJPVlhOqjI8Y2L9Vs4e6r31nH6EF4GV8zlIKShDTJa7SwDFUmBXbZwm1vCSMOPTf+Wn4v61h/812mMYU7anjYSsvKLmzQ8Hu2UFzx4NQRnYRFtqTVmNP07f58le3fK5R4lv13KKEjwrXiFiLGwdqHPNFxk31Mf+w2I3EpQv8FqNUIVGxLV0sPJ6Rq1shBwzWJ92VXy7T6spX17XZ6W5N6Iz0A0e9sodbqgcnu2lbYUeXGHtwx/oFu7lVH33YVBoHTxrCDyhltKnCCIMaj3yzU0ylIB5QSVY2TaFQGrujkMcvpBx91rzheB9vhi1Dz8PcY8zrd+gG+Q4Ns71TGtuHcMOnwaIGXbZNmSk7d+q08dzXzsTBIoW+UvaAyg+a/x5frTNwIbL8d1yzCNM4LRMoUhXAI7WWvpdv2zDtqs81xDdz0a06a61S8mVNfVf2HfPa7G54Kh9bSeS163TyV78uEw8tJhVrk7zMOR242vEq5nyfW7Cml9MtvAq2hCebrugkw2k8OKnBTP8iroZotq8i3hYYaSdqA37dKOIg4d909dUk/ONUVkPZK7BudiNHOPLBlbXkStUFYPirF3P4wZyfnYnbBq5+85hlgsfeA3Z2ffEz2qSTCSe6ls2OQBKqBtsSjr7+NlJr8g4UfzOUalSpj75HMkcpIqCIrwet3Y/NXJ/DioOY4EeTWNqdEFrnH0220b3aQ6+DfsV/5QrsMxrm25I/CubU/jOtp1XN3jLF5JubfKuYjAZ0OJ4Mz9L5kAtFvAJbximwkfx7jkZqTDJLV9tYL2wLsM50hERu+WjKDKwd1puaCU+Kw+al7IryqQK0D0uSgXzSbpUXKYswKaPSx1k87twjtmakEYvdFHNyREV9dyCmGOd/hENJvcrZrUTzm2pLg1BrwqyD0DwVsziw5iAb7v1ENgIoPm7AkMginUpARxzLDiWYMYeSGQa60Rze5w2/2nQr3tZNTo+aag4/jmaHfO0u7ffKBc8muq9fRlTFC0JbmGbwKSvub6iUIkc/+h89HE8ZpQf1v2XwRVY+km8STPI8MtuUecj50bF/n8Mh4n+ZuOMlNVPissX25nRvEvnurthh/QV8kwlUYhveplz4p+61IKpiyPF92aOrSdIpu2QxpEC6vnrVgSeR6TYRB1MOF3ebjQD/3jhd0qwth3lMby082SMq2CLO7K0+VNmriEqX3yxlnJh89jmt8Y7ktIfwSxfGmyq+eHfPJkxKiOf+342Xd1Q+SSd3PCC42ku5MadEOY04NS1Ut83HnI1PDK7GUmwzE33vBJ/HmVWcmXpuHntD2OZbhlBRY5X+eVActWmmTfGsp16l9kVehs92Giq+awAwEMtY9kDJH+Fjm60Ipz5SdO+rom5SGFXTXYTFqnzydEWIZnz8WhakFN6XyajJjlOCRSomLn3T9EjxSVlcXO3rO1QRs6w5cElXZDqfcFOxquDdOXzGxigYQvFaXLvys+AznL2e2AecJDjonwCSGdYhcsaGnvKA7os6CbDrKn2dfYUGqaqSii2rwZxv9rXZIV45uF78FK7Kv+aB45VBKDDADmUSET1qucP03SKyPywU/Kkegckt37cmR4xY6sZGQk1uNeK6AEfpdiV1uyfsgvvyD0xNYDZIZtxH6KadLyf0orcqRYT0n3qBU5LgFvCEU7DsO3N3PDgwk1pse6UUnHuAJQgOCbaQ6iQRyVJlNB+XySyR5V8r5n5FnX/n9kr64ME2N6F+c8Zt+xqFO605BCpLNAGY0wVA9uh3BC0zVImtgQIKAoYE5GPo16L9qVdYFSTgAUDa9olBavVOL3726nNfcYAV45HvoOcLb/+DUwLF0Dpvyquvd3T8QBdmJy/1QSDu7Vu1kru8zPU9tEKo80Ryf3LkepF27c09SF9HvZKEQxAvn7XLWyLG4RVvMg0fJa1URzDqQ07GCN4s/FxnCSqSPgIzWU18Zrq9e7ZGRLPLJyNJ0BpaoBeyabms7eBvv6uyKwby81h9M0Pt1Ewj5Hi91yc1NTVNKXCu5ddoBPXKUhGGTMmf621+S8dMqTXXw6pxuDaE/z3bEumZA1hhym1q16awFNGqRGZxc/NyfWZaaYFwXX5zCIefnawheF01ClHTrHy6T6dyfKs6soARZz5uY/ALXfE629kp6foMoJ2zNQeDvAF+ucX61tGqVZbxQgOSfZcSKW3lzNxi569oPqWy/vRsXBlCPQnL3yGwFsBRbPJzil6oXqBG29puYU18y1OXAX7fu4Ltxgc97PAx4gsv4r8CQUs8yCTtwNIsnpMoR2hsJO5UB3/sxKzQMxUXfH+NSVjpmr45d9LyxOV//O/MmmY5+2r8ahTXsiqFLXW26r1aCjA9faboUz4+492c21X7Hm7z8z3DIk8xjLVSWXaRlYAklSxXGkeGnN4txOQoWYPHEJ/Mput/sVVqiyHh8JI+cEsjpMTs8yoSCAQLYR7e3dqQB0fCwu1XtrKCaq+FJqTXlZP2WBiSgZMknp0EiXyXD7TpzTy4CyxUEJQOXFPi/zUmIblcji+LuzOwHyj/ELX3tTaKELd1dLQ1lz4/7rCHWB5V6yxzQKdtWvWgkNEoXJGlNMxG+Pur7zW2Brtym/WCfW/ZbEom7RmKjkwQzFUevFoG5zvuNdNK1kNmOALufteItJ3wPLWHtAdoh1lPElabpHXNXPQRxGfNX7XFwusS3y7buhZJUmIbRIO8WtsM5/im9vrb0/e6LEmILSmkDtDZ1lpRV+uwn7S3bcFCdItj6dndsdjEvxxZv1bKNflQB7PvgUeR9gnUk5KesDWdQqAHwtasevBRiZPaCf77TtE7PehBrVPUeZUaOr+N3ua/J0hSsK5sAaxS8N/G8MLPCzG7A9hzp6v7ERZ8PbcIgU6o8vYxR9zJ98tZtFRJ89lNfGiJ79y96DvLYoPRc96AIKhPfpeNq8WZSgSbRNec2bA2L1hx+gGNyG4OVveSYuoD4H8snzxBPFDBuv+XHQ6U31k/eBPx0KlQyGiynmXchhcYqG+I6T/arcVv5/uW1NTdonkhmbRvbvUysZrRvch3hythatFTQhsILR19GZ/9v2YOANopZf7h1XYMFluL8+HCHD3rFFYjZw9fVE04wuBK77mWckvNnUc4ggVKUYngMaA99OC19v3h8BvkdNBGDn14gBRdLy64LiP7bYsxuAcenne7kACCSedjOE4UYNfsuER0xCqx2VtGNY1OFkdWZUlesz/Ww0SADNe5aSSexXdMo5f27aVZ/MeoTCmAtxSEvDUWQEr6d71F6/nlJjSakZziOI/0jHjDGktCxcabaNS0wQ31CrYaiBSVXsLCzG/axkhfw3hY/TasD0QKHwczIb23JxlXsTH+FUuL2ntsd3U9BhDgcjXs1TWaWx8bQjWbw4PJxv2SXaxgyjwFrYY0fREOPBOdcQ2BTQZapE6yi2CWWjhrqJZyssqEiWtpeArYyyDt4zaqgw00hH+1h54dPbQMt21/mDl7jlaDifNYE0ofNSj6kkJGjX5Wai2MgnLH16sZm8IN8T2BH0URh4rrOyvoqG0/CpMF99yOT31vtIxogxU3I/gzHo787JQ4QFEDDl66KYpJrnyFDgSaVgQ4iPudY4aIgzgY0OaNw8qnmKxycOMRZD0YbM7gBrqack8ZPtHniKvVyBmtJEtAvzGuYWw3AtUrf3a/mPd3kjLQ5cZuL9r6JFVGSa0hAMfZ1Mq4HowZAyKuglRuOfvGz0nNnADFhHvXextHaTU34cNnsTLbJfGEuPYJZ6jztzlhnJZjmeYgwKpjdDuwM0CTj2lP2x9I2ZfbcFG3fQRyqohXY2Fgg2C0VTTaV/IdES52FMo2yIyqOV9ZKrxvk72NQbOZ9MUMkPnV8DMYm4WZ1Qd672ppVXED3M0hk7qKity7gSY1Drsd/cKGcSvL4L2C2I4xIvTCAWDQHfZWf1QtmCBMD+22cQsHUpGxH+TAu0ydRQ143gxD1Dec7ztABjWC0i9+mXVfp0oj2Rf5Gcc8IF2Zm7ZA8czYWzQFBPWpKALS5TtEkv1HOULn1nsOlUYLwThoNNRKOTbhygi3tcZDpq1BJWcgnRMmg7U+vs7/GXbWARkYUAJM2q/jltKUmqK/B31drKzbX9LG9xpq5O66GtZCZY87zr43K1wnrn34iFQunc2J9SMnn7QuXOU1OXDd/RJq6dST9klQ+lbOB5eCGEviUXyQGsHMxtWoMNWJ+4LWwCWdA7E/cgpjWDncwIfTHM2mtOwuXrs1PWja5tJ2s8/jFgWEOdwK5BuwaKftaHFrs/yWSTtYxeY/3+KMoWxTxZF9w5K6n2fp8HatRHsf20Y8Co9M1EN3v/psVzwOtqAvb48YGUymEDLCu6M6AtIns+FVNI8U0tiF8bYOSzV9n7pjs1xqCui709B51kYThNcemFNPX/yXCX4tDV9fHfvJHux1e4ObGfxtQXuj0+btSZ46+L4Uxr++LF+F3hRZvJ31xgqG19EtqMUaWdRvP1RRpcTdIU0xybdV4aqhWNci1h26uAS9+UhhCGlhIabHujNYCFcAzLUA0kmgmHEnlMAD35P/5w10fag40MNjzvORL/MDuJWODwwbk45bz9Ytc2qbbRZQdjQRQEOENobQ3Avjfml824GzrhWGbwmi4T9lWdZqt/hFbKGbbCmNR7P0D6tIfqkEx88P51jPnVNuXdLmnlO3a5Y7BWwlN0jYMfRXVSctcFHXljeMoJeEtObU0GdAyR2xE/VIiDDOuCVMHjxXDkisxs08mBNJoYha2hE91nsfEv19b+kIPvGhbS6FuEk+72IQLFZmdzFgxYpW/tra+A0BfixL9eHU3Ur3JoluBZV6RxdIuApNGjT4ypcy7R0GgMDIfygBRrMnZwF/maHQ9SGh0U+ELwJijGV36uiMorOHH8M/mKV67hY+u0+Bnxg/fb+klR7hObO1p0/uvCNS/3DhGybgndWL3nP+8C+m39nRVtUdeLbIdeFgqgIGpJJO+RSuTf19kMe3knq7KV5KsxID9Pje64wOLWsnpuT13RB+J5QTOPWWHhHNvR+Zqt9JXkb6R1Z/2x0ek6I1gp0Ag4bW5/29N4ocsyMpMnGmBdjJ7xywLjKdO/2O2wk2rVAR7NYBIziiwQlimY1NoSzyvR6YSq1ihIVtlP31OMe2sxoCqWdd5d92fooIoVM+OYMS/1Oq8vZWrWYjUym1NUoa+ggqlyPdySUzBtDLhheepsZpGBgSx2+luUkW2/bnmEon+iwHrfQxSHgPJ9rSIWcq6R8UoQavyQYf71TCtns89N+f/g2GvOmuDQGnNLDbAQjFkvQuzHZJ1r7/se78kwEl5hBfBWtTK9cHFP24e7qfRBTIl8O/wlGEqLg0f6N95T8l+NLUJJbAg8yt1bVyRqMQTXqBx6XpXJIYOZAeaFqFJXShnwP7RJENDTpZMUMWbe1BrKYmkRc921ZmyuHrqQpSFNXEqMVnZhNnCL9JNMM6iqvDJbxnk3RXDb8k0wflkbLddoU5zEgbg01g29lLj+kSK4RR2cye4MsLrWbeo0oarhdeBePXQ251f0sgzT6EeuyhltfXonP1dd7dytLd7dM3ustA/WbxEQaQIYt9DD0KQcgwsCCAPS2jwjA8VCtXbqTZZ2xHAkAt/ROIdalsThgSgKrZx4/jqLB9kD9exSWwMgQ9tPMwpbiL/sCUT+FqhEcw7paeCOFlKfwAxF6jdmm2qV2xvoc9Eit7XpqdNzZcsgi3iTeUp9zmPgh8IC90fPPYb/vr9MKoyqDrUN+TZiZHuAEW0kiCXKp+vfI0x26XRs5lAutLy0QEBsa7vuBVntV9xAnNSv/WgzX6eHMg6sWtDCo5yEI6QKKLf+6BAF1bN4kCZrU1yHI0ycPJ0UTuQyd0YpCK+FCf/+daN6D28M9cy1c8yPjNks+mDsHLnITV1aKg7KzM0dQNLUA+eT3A8OZVZfQHyaA6A/It/KkYP8bA3VM5+xttrDHdAcx5IkPyL04tqXDtWCLaTFiNDY85qZDPGTdQ8yi7oz8VQ4QPyzqV/sFQ3k/8IJR4jFg3DhgEiRL+WAvHvVsbZ3dFloyCiieQOdPPtS1sGSLS3u/ZuWjMW2EdNfDJCwy1uzHTcwDhdsxPKYlmpGMYzjvfR9s23g9+bKiFoWBPGBYezoX3Ijm3CM5ggs30Pc7MzG/5PnYiFKIDN1T5HhrjrwzTdzMz8MYVOYkAvJDxdaBTsI5KE6cb5JQ9+fAKUlFQZgqVGMed58iclW/BZaqsFft7xb2MdJIOERvmm/HqsxV2429D/hKMqr1zqjBW1Nl6mqPzFZRDTmiPf+IV3R7apm0vmlqqxVq8osC4VVm5nFZatWoCmyJhwsIrxNVs+hsNY5f0uqmYoaNmDlLc9Ouv0adiW8xGqp5B8/xpxRgDfPJbw97BcOx7o+Z17y79bDz4LeYqvCzeQBf+3nIL2/6WdPUM/QG+RedQvtWeGtDjuYFSPiSQ1joP6GR1joRlCWUytAswb6Q48tTa5hVhSiKMJ8TLaepMvFamYM3kM75kszZHAo5/6ys2hrY7yKywPEZlxSRIfDWDEi/5i0YZ/0j/2aNhDyUM5yqnXpPwr5loDej7oKTmXd6EHB472AV23MnTV4VES+49AZhrgQ9edLr+YpkS1JLDn2bBIHxpi5pPd6Sd44872zrkXN6JZZrA4gMenPUx+lwD1SD3EitLnQWo5oDG74SmZvR0xMk4g49z/12u5RoZxNl6THS/OR/rD+DyzAIdpS4/aQ8vdAriJOuGhKSXjsUkhwRHMT3VHnPkZQU92CIMcx/CQfdwgTVif5OWyLrj4j7NSdr+J4anwylHGGTPlj+wmYb3qBiZGr+WAZ8ve1BJR5hlioinUdEn10qI1ywpo5JRyZMiAJoY7mcNa2L9lhBppCFb6nsz01fLb/I9bc2xdvRC0knlx+qOBF8JpRxgttZLWAZRiYprDqgnsz6YGC0ggTGFzxxmQh23TAe6C8xfuoctLF7MtzCFJaPzBb5SL/6VSQeCvHaspHTYML5oU9UHAPHvTu4IYdAqgV2cPEDzFKgEyOadAl20sNBzpT/I9FQJZq2nXlJTp7DdlHEae0AykjZbMTL2sNGyVNMuMZaOSuKp4QP77p9V1B2fbO4xmqVCO9rBKxtf7vtCjfaw3Rc1RpU9Hz3lwt03e21nyQC4aUZrhz1PSIACosB8uWLToOiK8PilAs1IwpQOPPYQbrMsBh6uR7W7ChPpvlcRoQ7GRxlPnyV0h3sJDkXo8rZ330vxRfBRwoc8Rlebqzf3dxaNRoYQ2M5NHwD2qevq9xxbcHhUToPAMTy0Ut2SlijKU1gIwS5gVJ7feoMtbZtsXVDL488pXQI32MlTSiGW/GBQvU6/222trV4rY5YYqaMoidmMj8yuPMp+vMysiDNTE2bL9e8NZ40YWiTKYfgyOOFkudGQTrdDuU30C3Kemi1Z9STPIDnc6IM3rQJWPYf9XyTxaAkCtlaQ04qd7vqUiy5fLeDuAjs8qsO0EpjS1RYl2HuW7BBXOSzzpAEhUa/tICC9+Ep0qRIx7XkJxP2j3XSkkUKWDjhP2Izm6oGrROY/yCrThmyrOe2YTFMUd75OiwgANBTkSZxVNioZ9+TwgE4aajbGVHGFTzNT9bUGdits/jYGb4QVVRF2scokaYku4q9LP309Ul4gKLIM9mZ4ninWGk5ges5qr36vZ4w0T1X+maSr5z9SrzXOSQnMn6xoxOs5KuDqwunEwsckQ/3n7kKeBpzYjn7XeSMk58YXPgaN3vF8eF6RQ9nMkA9og4yCE3LphdHVN67i8EpqJfM/5nmiZKMiXqgQMmCwqwhyiw5SnO5nkZYGksgWbRySkkFarof+QCdCOP8FA1dYV2vt2YrLgzorO8LmOHHlcYY0VboqbrBkE+fWTOoUamoRQmRIUyfDQLhE1JzVZFfZkmxKs2TrgvA9RX+l3YQlcVTP+8M0p8eOhjIDNIWeaGRvU7LqhHPPTfeNFGCEJTKLlnwJx3qDx/iKctJDIkFseuCHk440XOoTM1nadvFUpslgJL6ce5Z0feFy/fhsIjZAzuRnDHujAsuf7R9ACMhbSdzikmxJ/ohghYOltFWS4VIzhHHTBVN6iiWFHs70xa56A2Fgj9XstgJhz3v2IoxdB9xRU2MB2G0Dz8frlekbv5MfdOrtScBPqGKyvyDfbEBcQTmIUm80UFo0pwA+UfEUEMQDjfAgA+nCH59VXjSveNAXaMcpge+aYcyaxVRkykLTWlqFvuiM7bBQWgz62tjoGYHB7yyoVNga7eJEAGV9ZJHQTsQCN/Sq1tZv5/mPSALqEZumD8aipouYsXyDz6TJkvlAHOvB+cegztJmtGxZd/Anlwn6vDG654ZEJsmehQK4HT1gddr9RM7401CYuHvnxSaweB86atoYtyz5WzWRGP0897crv658HUKDTgOvViVXKobcFPzLikTQOh3TlTsj8pNVr74A/6K0SXgpokB/Q59H9x4fhj2NI7kRuUXH+rNqWeleVxm2WFHUR1qOxIMfbdX/TTVOOPlUo1TRU8yL7NzMmqorGc7obmKnsCzal8dz+twrkr7zZBKJQbhoWN5+ZrfsKl6CvAnDiCZoZOA0fUqk6GSKpyi9oogesVPlE5lA5olG76+JEWVvHl0qWm9dr2lAWrht6T8aIM4Hb6eL31ukhcYXaIZ5d7RThJ/nwKKdRNHtbr7aPFroMHT07olSI9jRnLONr6tV4kIMG2dcrEbaDxFRJIuGLtO+BQiSMnIRmUWCacbd3dVs2y9J5f2jg0NaZfZGzzG5ufEBYZ0Np4K23l0DEQesgEqFtG+DVYhTw05l+vaWqt4NIHOQtk6wz03pVOWVAly7p+IP/bwCQD8q5Z0lMCdbvfowLuRly7/s0rGNB6okdNatg/tb7v0KLh3ktWavKkqqpsbTyVMrB3gLdGT6kkIuM68JYp6Pb+InIyKk9qG8NXThz6Za/Ks42ZgYGhl255zLuCRQOTCxIIKFLW/LrpvzgkIMHjqw/1ESWxffpcqH31ryljhF2xHbU+Eec92p7tYwhmdKBqLFV+sJqC9hvBdwMa0W4D7tylhI/Yx9blCY2KmyTjbqTlsLOlo9kDF6PU82/LDQZQMZjVVcz/i4ej5xYrwEYUKTrpaHPTJUVqScEiOQutmY5MuDdRCk1WJmeoLPlmCzmCsTBdQH6/GWo6Qa1g252sh9nQ4V6c+lTngVb6wyJlz7r21pc8CPbHhBAMdm/jh5JzRSPhxEfQ+7XkQP9xtqIU1lvHhBb2UwsP1kxXcmu3yTrKgVJSUlW94mSgn1kwF0uFhzK1d/qOYGxD6c6vuJJmKCIuuuTWwWolMEXBfS3Xi7vFiqhVeZAJ69zFM+sNZ9thsSLlk+NEEZd+OBdpgrtZZNCEdcJAzKi9pzbkFaZQyn7iZrxrfLZtBqCmgbk7lTHrhOly7s4JLL1V+0ZJDWOJS/laAx3/PplymrmJat4pTxsGfbpTG1/czKcxYYyjS1xixrmgkOy/gevpf7Qk+C3ngpUHsrbRItAXUuSlbLGP3pQlJOloTuz0KjeaXltwBrAsC5DHJqaBX4WOwR5GoHAu+PuRh9MCv4okfQRlIZ8m1ibhUqUnGLTpc8TJxo808ZnW6vvkRSPbPHFvBSywpTh/bHl4cGI1wn+GvCW2hc5WvNLLCRO7CTn6nNgzScNvJ28tdEaRlonaGxt2gU2BEcVjVluk3JaEGf4UuBKe5K7q3RkCh2PUS/TCPjqkuQozA3HqXzCQZR9iXehqlg+JbG7Sxmx2qg4Ma/9cr32S6LCwWlgQ2/Tx2tfEAcfNrTUypQiJ98Hu4JJLtiLpgis0CE/ldwr8JFXBQqQ0NzxRv5X6d4IqqpqXCxoJ3qSmEByhR4QP8ftFU1MYNzPhfoCv95z8euPSHHCmOAgHKBGMvCO7ELJ1A63LqMPU4Sgb/7RUoBJAXwPvfYnTQCYqeYZDzukYyh7iEEnnDWRx/uv529r9dh8tNahqmBhTxbFyrCmoL72OR/3WUXg57j2q4Fby8WkV2uzSrXyhwmZ9lKEjVkEfTxD2rHxYf1iOTse6ruyHGU5Rrjsr8Ng8KXnkkcguLW5ZX8dbWe+5Fxy6P+SAzGuIz9nYpQWGhQiFfBY7W/AddYkF4MUzYakbsgMtEAz4ikiaY2z6dMsja64oEUA3XrhQ2LYcbCfLSKDwKFEImjbVBI7A8PPhP4QrPPT0Ua5CyDkuU3PAdovBlka0+ixeinaX4ySt4hV68jv0jUJJJWiCBMu97XtJa332C5Af8vO0i8t/EBQS1vtfzdaf01+/woilxzQajVdqq6eW/ko8NiQtmf1HMCUKxt5+pLrEeKxu9T4vkQ8jSOefpTTaaPbDHEpbScXDdewqh+5j3/l4dnvBFiho06L+k/Hy6z/dlhxL0doec26+ETDb+nA3u9OLDa6FAKT1IZfWMuODzWWPFOrFyh0DrSotp8LgQ8ogmhBk2kFWm98QhMgds2fyD5BLKIIIGFO0SLFLRnKWMIDJRBKHt+jhdw2V8Jkc3kmt5rSOu8wtL8U+0tA9Mow9ZMddDKbNCsNSXdOwTJb+iJci+SOWGJAsk29YjUf257z6ocbgqzeM6oXUJhtLixt480JHUujTrJt3KYuAt/IhzeJuFizaPniOaxyd1MnZPoqfeKtlCf5dOIC8DT2qCYFfsgfiM344iw1GfvIDqH3cPMeJNaOIi3uOBzHZyeT1YX5wYA8+xKkZpb0YlFSTiO+Lgn1w5apFLk0wX9p1WxFsL/ktrt/APLwt3osd7Mp28oE1bEDAOrvx5a7kOFcj/CNyjaIJR0xYYkZk5IN7tnEQxGjb2L1vKBa/pixherl+Fc0OzY+J5AO8L4VQYqcga8snahRK7NAcZIaQEjeiSGhHOz14ZNizCsfe1PK2goAqiErCxULzzFegqaC+j2wXLAOqbxq8AYp0NI+1pZwgh1EgCZ+BLjV1hBE/wWqxWl3KmP3UcG4yXGSSuke1YgK6zLKmt3LRJFNZyfZbz4wtWSU1yhcAT33btjj2bTsegWKzHTpCOGvuEOVIyC0BHZRiZyFJp4D3bCazNHEWEJDzWY5XSNjFEbxsJLU69NxTzCn7ydnc7nTuPLQ1TmtuarldJ1lk3OxeCi8D9zJEIioPcvZcpgLgZDlilbRp7ACWvz8AjU3eh27kdI2JedenF7zUK6yccuiZzia03TjVfS4WSH56BKTDlQkFStQ3Dg6xMjAh8j65nIz1rM03FUb5cAzCK8Zdv7fjyD+tZH0UZIh7MYSrQoCDWyrSq+H16jmPI1UuBrlHS+E4lucGB3Eudlo1HPA7ENmd1sxjMZOjx6CjjMG8NOT3LpRAf/x294X90iof980LimP2n/xQsy2iXRG5wrf+SVFdfHvEkStHjlINTe3beolnlx1uDt8bofLy6+UniNJdGqWAUl0LyBXkquMRtRBhrdu5ohg0KxRXRU9GRN8s58sCkzEAH8KRLLvKU3EeWeYAkx19MEYcbbEr7BiiFnEQQlOwFWOkEZUUUT8Oa7O2cW39Dj6mJsekpO93llqTG0vMc4oV/R6k5yby4uCjygl0N3Nd8LxQ99ZzZNIJfPpVbDVTu0S48tbcs96hJJ64FmVMi7IrhYh3iTGMfiI+cUvrD01EYx2J38khBL+ANgs+EpbgRyTAS/22nYD+0AKUd1kkMkTKfLDDXhPs9exbwZtKUiwQckndMtXzebnzNhVclnWsGH9ngF6nndkyxVj/vEEze31boGxOC1bBW4DocgLxeRzJd18D7PbE4kH+UbKHYI/jMDjSUl7u3qBgGD8GldMndQqllmFqpttBDj8tizPTq8z42lLep/+DTV+xm7YEStoa8ctkR34kuJhMdwQ81iGU9fi48ulZVSLSX+Rk37u4d/2Zs55NruDbHnpbBpDv6p3bnDbMXvcjqpiaD5iAdT9BOMrs/CH0c9V8RewGYIJS/0zoWP4acGPhX4RbKsL5D7WhF7y3qqqpejkmTZ7fuGdZhKPTjz7mt1jJTqHgNUISrKmrrZCtVXrnIqgNyD9Z+fPL9AQ2zTUQo4WLJwdSvW9DIuz3/A6pzbid6Hjar52qbqekNisN3U0eRfUMB1VfecvZ4GS0C0R86lPMpjflmunVXCxxFWbBh8hqlVq9JzQypjUlSuvdOGMOhAH7R6QMZJyrTSwG7RbJ1qOb5P3qQWCVg3Kmu8AcUMPC8uwSFxQd5tQ77dnKOXtjd2iMRDuxV/xb0sWNaosEzYoM3/0tBZWNCrtEdgCcnIg7zqu1+Nb6F4cLWDjUGKgpW4e7GEIlM+HGEg76uACgMN4JXQOi1SJqo9Rhr5lDcX39oV68sTYPgwkdxrqUjq/lEowqThQRX9r3cfU2ZOFEy4Xj59YZVWAjK7bd2bRtBFPjTW4r9JBBHdCXUeuZYwJ4Ncu0AUHBstQTAb8iN98kFazBfTIs7cJY6PU03DSLwf4GTX4zCiGRN6falHe8kRM8R50Wi4ZSNyo8Y1xzKJ7vIaE5zdbklVvLPcq/0mRR/GUYnUYR2LvbYCoVMf7g7kw6ZvFk9n4fiL6JEmDf3KHPBWKuvJTmkh/cW4zf2y4FF1CggOCkVFRGNXyWd+5ZdtT8i/YSzRMWScFMWBirQL1dgycpjmELo3coBuTvccVuJp9/EZZFNTdtNqqz7yAj8sbjl/Qi3GZpo86Mm7AK8mHUUd1/lnnVpEX681aBAxSnDe8yhJokCgwbMDOW4MJ0tRng9aV2h0bzmM7V4Rq33bL0gifTKSMV7McTIIU6EwHkolvzjGD8JLGP1rXtMwERh/QKeqvp1C67tIISfr2L6lQvwM8gWpqS6ht+S8cCmkPmWv1n60GDrfv01SXyTkx6nfK5TLgDrI2Dx8F1I+QPh9P0xtDxGzZseHNyskqWptN/W+XaOK5bBYp6ABu0/M8zP5zOvd8QCBYUbujhiBm5f5T/GYH3wZRGqSq/CAlZw8jYx19XThMXmQ9B1i0Mporl/tiQHBYM//0ppeEvGPNq39ajPDXj5IyRXWl04GzsKPeoB0JS0UbiC/NVAiZbwZVwRB96w/hIn1fxe5gSVu3HdS3UXJN1pbslGp7vlSAGPb39zQ9S705ISSq85IHbhTpWlggKWeixjUqNJ0CWGzpqW/WuR1tHrxgmlxwL3pau3cYWHXcCBt6OywCBskWWt4pkSGEYQpzAvy15rdOQr3KnuWTYDgIm6CXRnnhlT4aXzKeWVFZDlT0LE5HX4pT6g3Sx7TBOZnnvMhT+VkonKEWFsCpLfO0qOc/RqkxW97W2x9ueHYsainQe3l0Npf/dAJHH2TeGEH33I0zD8qt9rPPLExsArUAWE581nBIpM+gb8pn0LuzT0MSU8vMnYuDKnxaEEap2XYGYwDV9HCtrDzjcMGeCpvlJR1TdaLYnsQ0UIlsmJqfyPQ5Wt8EEReVTKkLCmOTBPKw5uBNSOlxmqO8EQTGPOeqj56oGPICDjV1N4lNhHmtE3X1/OCORlcdV1xdsugbom+TMdGZWvRJttohJo3so+VizQLSZ8n55YYk1zIDJfwTEL0KIghUzsvAsiBJy35ETmpyMV+9xAtlHlO39CayZBCYnkII60Q7AIVDmaYPfJKpPTi8m86+4KeEyjsOEseADNswpcJg42kwLtj8x3IXwoWxz7xE8D2h+ct2kM7DjVvehl2m+sbQaL6MtxIJ1NQUITw57egMrv+8YSuXpdOMliPzTFRRMlTbUBC3vUf6friuyq5SFE21WRWTwsfPjUCJ3h5B8jbYqdF3gzAj/pgytTbFCi9BaT7bfvZ1Lco1fUTHHiidvF7/MDCM6OT33+LJCQUv15s3+eFTO6nks7n261co5Wrxm9wgOL9Zg0k4DQHRJagWxCGSCcjvZ1Gts7dyJ8/XY22DfM3GeYwc2yUeSn46nzcFAVJw1lZIHKbQ2SbhFL1o0JFHz3DP6Hg3oZPCPeW1Ypk0OAa7qWmNWv/L1Hnn2H1m3GCDEWUl6Qe5jquniCjb0/+fCx/6UQkvYsj5agHht19pUXzh5ZNUiu3jEW/xWmUQio4HIm7qzyuwzOB7/qSIdPvyLIAE9UbTFqPkfCVBDf+L8ryLB4/TABulhVE9K+XkYmlgNp/aJORsRQqtmLjdk/OvaXHP8IY32ZJg4OfXIePXZBMAU09T53B7w/S6WOJe4b5XSzmwbYCRuRPXHpc9syfuKwasXwJ5dmXCWQLVtuLzisUO43cNInhQSQoYmg5S/Q1tD0Nbrx+4cMvxMpUGyp1phLeyWKHssBSRbdCcSei+LORKEA3nNIhTzQVhWt2TyoFklifaO37veVQMO0L0DtceIPKdlyWSUMIJPu+XqSmy+k/gpejaK7YFeH5fzGyX0+v3byJPNrfKAzoKYbSprhisPyowr+fVeidtSsLk04txqMdE8zoD/6ruY91LuVsIopIHj4ek9tavY3lGkZi5G1gOLFIVoyCuhur7+8trFqnIDRdPpRlsiV5mUITO57rtKyDCtZ5zDmRcjxh7SnCkm2c+zQLIejz0Gl7BaHypUMHMB29eFt6eIiITozd2F6oiQSVR2T9o9r45tf4RpaTSX5Ur0bJAOlY1b7Z61h6bwbce8+eIBiw5LUs3xZ/Eynx9LBKznN7Qc/kMBTIuEg29cL4UJW7QooJ53ILhvAUp+RQ4vB0xnRdUw6oRndK2E+VYfKamoH3KUHDaQWh3N66VTqGRYOmulFFKWS7H3Rt9dfv2n1ABwpC155LcwuiLybYjtz+oHGVKFlSkeLKQ9vbLG4O1d0Y3tI40bVjmw+vukQ1Vl97kxuIW4tgoz7uXsk2NQQ6cdbCSiwwm8lkj5sgHmhDiGy4Iuz5h9uSy/ExLeMRCYT4wZRa99jPy3X0ALZBf9fpY+nIo4eS9ycLc0gt1QpgaxyG9q66Sxcu+8YaNVLe2j0E9i945M2BtmJCeq8kqa4haIBJTSb6elkPFdcBFYTzVo62gSwubzigWD4m60r9vkmwOUIfiRLVu3XZ1Z/ANMJxO+fNKhTmi1JOSNN++83nITdInXGbSJCHr1ahoIEmN4gIApY3OK+UQ8xbKKU3cn7vjwxG7QLPKrSCFRKi+K73LZshARIdyL6r9wo4tQlqGZ0mWKhsn83qL4T+Onchgf4ETaZS5rfIE5n8moWa93i6YKmufecPdquaXG/VhH9f/F7rzOJQvTGFueAw8tbORtsNIGb6umpVbxxDQXAFTV9ztdewwFB646XgJW52kAmwu8TCP7XhvSbdlJ80TnaFMyUqfJr8Qzd3aBgaMXx0UyMsVk+sBczskbIa8MAiWIQvP9D207BZqXLRhlGEU9mAE5Dj604uv+1pgb9c2/b3vtJMq0s3o4up4+jnbdgd2PKLFeYfxl4odX5xdb1qbxeaFLTia1JvUcZr1d+1ZdjSCm83kwK8HppEzwYGnPd+bynJ+wOxQdLBKcSIjOZ23V6+LUbw5xaT1c7D2wb3R8A8GD8OAt6W/8Q10r8mr9p+4FvIkOxciz2mhJToG/Z6k9yjOHroTZ8OmLtNkJTHFTf6qx7Dqp9kEZBuQdZ71bFNaUbhapyM9zG5F4f8P425A9uIQimwZ17GgA5vQdFho48Ki9+7fruJ9da3iJcx/MLhcSRWsaRneFr/5ZUY8F6ALNGX0t4UQFVys6DFTLGqG+cb6EejSHhigsQ6ztv3TKuDh5t3zTWJnNws6ScOOjFCICJhJ94L4+YvZd1b09dIaQZbkG6mSnmWzeorTgDsVwA7Zo6Gr+qko4oVNIlTSAxBqpwSGIOxAISBToy+7VBgUR7afpacTZ6NVpv8TF087LyigzR4N1TRFVK0V4I17GBBZYuzD9wQ8cqEP4HjB7rJZFdbtXYMnF537JT0ElJyO6Bqfe5jHmpma/jWsYV5o6gQb15bBlbHMENiHhYK8lLTQXdE0qz4EskWaOHzTmuLAWwwvwsS1Ux1q9NoiAi1MmM+2RCLCvKgUwVDwwyRtqnh8xRtb1NtBhkbScsCJlObllOpbrS5eG2Mk/pwFVl+uNXII+oy0m9hVhtX/UbkAR58HI0l+Tt9LWFzxWN7MF9WdsJxnyWpWiOZxMePOBwjPzy91ywrJHomDxZ85tXDjJhQ/04u44YzOdFoYRRV2iqu6FKfXmJrqrwZIG3W4kXd/flsKrScnvtspLsMDrjUt0r7DNx9ZtSep45vW6Z+rC1XbE0mPIvaVJqiWkEuZ8kJ4gHh1kc6jwaH3LKSLmhUppwYCFzoOpQZQ7tkfoJi+Z8SRGiYO9+wDr8he5WHX9GOaFG9rYSwR2bPens4kw5oGvD4qGCFCWdXk2lOoDc6it1ZEtMz8l/qKvwoJJzF2y/KpefbkcMJZfWrjrBpMEoH7ZbEh6f8ZxQNflpXuJ3a3Z/fnPFzS7m/fNkpqJyBlgY0n/htJWG5qn+73vf5hnESYSEKumyhZHkqt5N8n2k6uOhZQabtuz5P/B9ey/54DhXa1hf/f1o2D0FaR77/AeQjHcNXwPZvaRuNt3SHilZX3B4NZSqy0l5XQPqggsT4pdJ+BskZvRRXy46MBcuk3ufX7K+UpC90T61hdmHREdwvK2cvD2uK5+E/6ZYpDq7LVT/dD9gBvWRS+QTfiQVvi1niC//8byjX/PmhM9UuQZpqPVDeLKyFhVjdRdDgnCvN6Z9oGO9bRsvNbb1NlQl6zcOivtbs4BiRdRktTt0bHkVtbhpU8vnVbXeHtOS86O3ohfLSbBiCO/JnPDoTdr5fchpH+fsKlggzfcHBAI2L9xa1AesgjYnGiPYvikv7kQAziyRRUfaNAJy/aPvMbeP9Q4P0t+PI/5Ii3bzC+e8qxpin/EgSK3FsDZ2+MmxxkO4BbaSid9iOAvT6vsUVCvaJWHCbyc/N48S4MuDHR2UwnrftiM11sLk/p2fRwvHX4x2hKXMoztMIxsB9GYm8dZwgMNpeupcbg+8QZzb8pgQIlYVN+wR7e3gEu1NZCD9YMAXPE8fvPJTPlHKRVVZe1x8hNL7p/KxfJYWjq9eJyZKzgOCEuZIyZ2NGZ1EYGsn0D9tRg7wsvtzQlyLE6U8zOOPdfYV3JMpViJbjq7zY4GW6DL38E1akGzwlqJXxQQiEs0uBGoXMTNHPXq1lsVFc66XvlDE3ELWD1KfZquZakMg3KnUS9rN/0KmxG9B8my6FJFAz9HT53cRY88PI/jE6s475SZEbC7qZ99Vg8qerueY/poEmpU+488yhYW5l2JEkFDD2aUyet8WlOKd8nO9W9RLCODlwRA6hRCv7LdRXZpolj7/19G5ii64R9hhga/z0EvswgugL/bPw0mw5qCpUQHTyuzArpD2JyepgypFYr4njigwGs8SY0Pt18jyhjiNC2NR1fudLVAL3orz95aLZf/jh+LdF/E9krWg/xxu/3n/xyTeYb5C4rESb1tZf03bXBMISgYUQ0A0Mhrp6DYe0AjDJETSrCSpYtBARI6adALJUK4w3AAuXO2WITgo0qT+wiUPda4R/hQaC2YU2NYcHYgj4oAY4NKDcLxkM87LJuvdf5cf+axVDyUr63TGqqDAgrckDUrze4Zxu25bwk1Cl8o+hL+rZmHNXwdxGgK37vOf2Z5CSy5cUfsAeF2+KdLa4ZOkYTmN7KEGV00Pi6SiOyga7iPVKuV/Btkx1BfZsBkyL/spRBlNgbeWziwMnu7ou7X7qlLatv9Kz21j28W2M8eSM9DPdXGgU5wqf6lzUzLi543/0Gja0PapBmFE8sXu0+Glw9GfR2nBLQhkwmNQKVh1zb+4brnKvs9OPDogCDENwoyY91nzaG0CekzHxUbqa74WcU0Ir7KGT+tnxzrGnEvmmZr+rwj5VXxZb/iOxBnuzveGHciBF/jY+sBOOw5GbVsQSDn4amgcUAA7tGQphYcLqWx+R49DLi27/avQtVBCshq5Rs5jqJkPbzE6Nh4pyHx6pHG4NK2S1UJ/fuXJJwOzO3lnNg8T6NJqj0WMNYqjfqocGgnKOjGTmikysUGkbI3GmN5ATrfIxzQmGOO7JWioHgzfQKPaVWNFtiZJ7D9TifXID9pMkSbM/DFR7KMjvkWjGkgbn2bB7N5V7yZHbRLcA47pjH6ClY/dHjUsXnb6LQQKthT4bIu+E/uZDtAxRc28rjmRf7jdAteVcM+W2JbMSBrgtYuN1l98PYpk1QTj/ixlPL/0A9CcrY8SKnj9RrVng183y6618nU7ZoYy2sSOg0x2SiBOlkbZnmw0NpzhOc9eqxMTvb8sFbVkunljlgRIKgI16X0Y/AaY41TvnL5VOjfC2S0sZrL1XVbtuezWK4jrhVtn+Bh3AQhB94jBwsTgUYZu1Mm9vEyj49fe2aSNxJSFW5kMvAkUsX6Meh55ig6jD6LcWpfxWOEh4+WiSMMUcHuzwfCUCpXi7JGFKbpXZNuNT5MXWLtbT8ZQ11U2E8WFDB0eLG5kvumsdunaOwMB1OsMKvIjAxNmZhNj7f0Q476eerqB1qTrovflUPJw8pZxcPokriyxMmij2G4HYrxjj3BEpj8GQDlLRCwieJwFeL1CmmbE7YA7kqslxgVPkTkHKQFgeReDKGx3Lk8FdU0p89w04IZyD3Q1pHgjYZyBluDpX3/i7xap3aJjrlP4fRZKfsHzAGWANSyaErQOXhgUwrqT1LolmnXECCJ7GXM5dYZwQbv/i4uRX7wUG94uQzYtMtP1ZBdFT/pBrM8qpVC4YOYGfXdt6p//Xu5ahgeZl1VEr/tAgKZqgTIbHJekAYN2P6s3WnzVMi9ydaYpYFFJKV/SHaj8I3oMs5bbk5xMx5VlqAtlRRonvWebvnPuyrD1975OM6/889fepXvf04c6KDPX7BxvH6oPS+lxGqGtta29U49k/3VQ0NLhmZ7+plm99Asg72rjocoo9AUWo3ItrYzT/Ex3y8GOPHH3BpinBCVFXiAHdErdYGMoOcV4rl4sg4XyMMj6b9Kqh5kt8tY0fXDVJGyhLXdKfDIhJEs+qoe9uZwEYM0N4ReaTddfi17TzcTGcI69wBD7vN7x8md9ZZpMGNnW5zqH4kASaVlF9zVDtZ0eh/GxojZ4o9PqQmajC/TTAoAF3+C9sNwqHiUV+yk6qBweV8M7Y/d4ZpbQ3ty5o4NOeLpzdW8rn1N9hmzgIQ1CswxCTPbN2oycY/+OMZ8WBWVzit1CrN1oI1UDSAL7UXPBX9O9WRaKqOW7REEKoo4lg+6rmwfc5enGUezJoNeT2a6nG8hLUnu5ewcU85kHMbsyivbmWOI4pJ1ypB46NPhSyfBccxWUKkdSGJIXH24ZgnmbLtmA7yivp8n3AbMtzMlEStk1vSne6wb9dyuP6E+/VqxVdClD2q/+PdvDrSy8sPeXWHZHRFl2vvZXRFbiXu73//nPSzw==")); \ No newline at end of file diff --git a/src/setImmediate.js b/src/setImmediate.js index db8b555..7c233f4 100644 --- a/src/setImmediate.js +++ b/src/setImmediate.js @@ -13,7 +13,7 @@ * * * setImmediate for HTML5. * * * - * LastModified: Feb 19, 2016 * + * LastModified: Feb 20, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -60,7 +60,7 @@ polifill.mutationObserver = function() { var queue = [], node = doc.createTextNode(''), - observer = new MutationObserver(function (mutations) { + observer = new MutationObserver(function() { while (queue.length > 0) { run(queue.shift()); } @@ -106,7 +106,7 @@ iwin.document.write(''); iwin.document.close(); var queue = []; - window.addEventListener('message', function () { + window.addEventListener('message', function() { while (queue.length > 0) { run(queue.shift()); } From 15e7fc4d055ad5ae2ceba8aa852cb8871452b057 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 22 Feb 2016 00:06:54 +0800 Subject: [PATCH 08/86] Fixed writeUInt32BE & writeUInt32LE --- dist/hprose-html5.js | 2 +- src/BytesIO.js | 10 +++++----- src/TcpClient.js | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 9e8a5a4..076561f 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,4 +4,4 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/src/BytesIO.js b/src/BytesIO.js index 71242a5..ddd3e70 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -13,7 +13,7 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Feb 13, 2016 * + * LastModified: Feb 22, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -418,9 +418,9 @@ throw new TypeError('value is out of bounds'); } }, writeUInt32BE: { value: function(i) { - if ((i === (i | 0)) && (i >= 0)) { + if (((i & 0x7FFFFFFF) + 0x80000000 === i) && (i >= 0)) { this._grow(4); - this._length = writeInt32BE(this._bytes, this._length, i); + this._length = writeInt32BE(this._bytes, this._length, i | 0); return; } throw new TypeError('value is out of bounds'); @@ -434,9 +434,9 @@ throw new TypeError('value is out of bounds'); } }, writeUInt32LE: { value: function(i) { - if ((i === (i | 0)) && (i >= 0)) { + if (((i & 0x7FFFFFFF) + 0x80000000 === i) && (i >= 0)) { this._grow(4); - this._length = writeInt32LE(this._bytes, this._length, i); + this._length = writeInt32LE(this._bytes, this._length, i | 0); return; } throw new TypeError('value is out of bounds'); diff --git a/src/TcpClient.js b/src/TcpClient.js index 14d0a2d..33f28ab 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,7 +12,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Feb 5, 2016 * + * LastModified: Feb 22, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -447,7 +447,7 @@ var len = request.length; var buf = new BytesIO(4 + len); - buf.writeUInt32BE(len, 0); + buf.writeInt32BE(len, 0); buf.write(request); conn.send(buf.buffer); } }, From 3f7d50931ca0331145091558df78d7711ee99d31 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 23 Feb 2016 15:12:32 +0800 Subject: [PATCH 09/86] Update to 2.0.7 --- bower.json | 2 +- dist/hprose-html5.js | 4 ++-- package.json | 2 +- src/BytesIO.js | 7 ++----- src/ClassManager.js | 7 ++----- src/Client.js | 7 ++----- src/CopyRight.js | 2 +- src/Formatter.js | 7 ++----- src/Future.js | 7 ++----- src/HarmonyMaps.js | 7 ++----- src/HttpClient.js | 7 ++----- src/Init.js | 7 ++----- src/JSONRPCClientFilter.js | 7 ++----- src/Loader.js | 7 ++----- src/Reader.js | 7 ++----- src/ResultMode.js | 7 ++----- src/Tags.js | 7 ++----- src/TcpClient.js | 7 ++----- src/WebSocketClient.js | 7 ++----- src/Writer.js | 7 ++----- src/setImmediate.js | 11 ++++------- 21 files changed, 41 insertions(+), 92 deletions(-) diff --git a/bower.json b/bower.json index d9403e0..1e576e4 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.6", + "version": "2.0.7", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 076561f..549369e 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,7 +1,7 @@ -// Hprose for HTML5 v2.0.6 +// Hprose for HTML5 v2.0.7 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/package.json b/package.json index dea18b8..bfba673 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.6", + "version": "2.0.7", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/BytesIO.js b/src/BytesIO.js index ddd3e70..6ae9177 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -13,12 +13,11 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Feb 22, 2016 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global, undefined) { 'use strict'; @@ -653,6 +652,4 @@ global.hprose.BytesIO = BytesIO; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/ClassManager.js b/src/ClassManager.js index ada281b..571bdd3 100644 --- a/src/ClassManager.js +++ b/src/ClassManager.js @@ -13,12 +13,11 @@ * * * hprose ClassManager for HTML5. * * * - * LastModified: Jul 15, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global) { 'use strict'; @@ -50,6 +49,4 @@ register(Object, 'Object'); -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/Client.js b/src/Client.js index fa3f2fa..d65283f 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,12 +12,11 @@ * * * hprose client for HTML5. * * * - * LastModified: Aug 18, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global, undefined) { 'use strict'; @@ -1148,6 +1147,4 @@ global.hprose.Client = Client; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/CopyRight.js b/src/CopyRight.js index c38de38..1d1e077 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.6 +// Hprose for HTML5 v2.0.7 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Formatter.js b/src/Formatter.js index 45d5d66..62e167a 100644 --- a/src/Formatter.js +++ b/src/Formatter.js @@ -13,12 +13,11 @@ * * * hprose Formatter for HTML5. * * * - * LastModified: Jul 15, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global) { 'use strict'; @@ -51,6 +50,4 @@ global.hprose.unserialize = unserialize; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/Future.js b/src/Future.js index ef2ad4e..f3b8be7 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,12 +13,11 @@ * * * hprose Future for HTML5. * * * - * LastModified: Jul 28, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global, undefined) { 'use strict'; @@ -650,6 +649,4 @@ reject: { value: error } }); -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/HarmonyMaps.js b/src/HarmonyMaps.js index 8f7f51a..cd998bc 100644 --- a/src/HarmonyMaps.js +++ b/src/HarmonyMaps.js @@ -13,12 +13,11 @@ * * * Harmony Maps for HTML5. * * * - * LastModified: Jul 15, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global) { 'use strict'; @@ -292,6 +291,4 @@ return m; }; } -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/HttpClient.js b/src/HttpClient.js index 4647d69..bba8114 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,12 +12,11 @@ * * * hprose http client for HTML5. * * * - * LastModified: Feb 5, 2016 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global, undefined) { 'use strict'; @@ -158,6 +157,4 @@ global.hprose.HttpClient = HttpClient; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/Init.js b/src/Init.js index 3ffcd27..7df59a6 100644 --- a/src/Init.js +++ b/src/Init.js @@ -13,17 +13,14 @@ * * * hprose init for HTML5. * * * - * LastModified: Jul 15, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global) { 'use strict'; global.hprose = Object.create(null); -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/JSONRPCClientFilter.js b/src/JSONRPCClientFilter.js index da3f7c0..5752604 100644 --- a/src/JSONRPCClientFilter.js +++ b/src/JSONRPCClientFilter.js @@ -13,12 +13,11 @@ * * * jsonrpc client filter for JavaScript. * * * - * LastModified: Jul 17, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global) { 'use strict'; @@ -91,6 +90,4 @@ global.hprose.JSONRPCClientFilter = JSONRPCClientFilter; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/Loader.js b/src/Loader.js index ae831e6..ecd84c7 100644 --- a/src/Loader.js +++ b/src/Loader.js @@ -13,12 +13,11 @@ * * * hprose CommonJS/AMD/CMD loader for HTML5. * * * - * LastModified: Feb 19, 2016 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global) { 'use strict'; @@ -60,6 +59,4 @@ if (typeof module === 'object' && typeof module.exports === 'object') { module.exports = global.hprose; } -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/Reader.js b/src/Reader.js index 22de239..c1b7ca4 100644 --- a/src/Reader.js +++ b/src/Reader.js @@ -13,12 +13,11 @@ * * * hprose Reader for HTML5. * * * - * LastModified: Aug 3, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global, undefined) { 'use strict'; @@ -740,6 +739,4 @@ }); global.hprose.Reader = Reader; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/ResultMode.js b/src/ResultMode.js index f4fd380..8352ac3 100644 --- a/src/ResultMode.js +++ b/src/ResultMode.js @@ -13,12 +13,11 @@ * * * hprose ResultMode for HTML5. * * * - * LastModified: Jul 15, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global) { 'use strict'; @@ -33,6 +32,4 @@ global.hprose.Raw = global.hprose.ResultMode.Raw; global.hprose.RawWithEndTag = global.hprose.ResultMode.RawWithEndTag; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/Tags.js b/src/Tags.js index c972dc9..7f11088 100644 --- a/src/Tags.js +++ b/src/Tags.js @@ -12,12 +12,11 @@ * * * hprose tags enum for HTML5. * * * - * LastModified: Jul 15, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global) { 'use strict'; @@ -60,6 +59,4 @@ TagError : 0x45, // 'E' TagEnd : 0x7A // 'z' }; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/TcpClient.js b/src/TcpClient.js index 33f28ab..a39ac98 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,12 +12,11 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Feb 22, 2016 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global, undefined) { 'use strict'; @@ -598,6 +597,4 @@ global.hprose.TcpClient = TcpClient; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index 8ee7e4c..36debfc 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,12 +12,11 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Aug 15, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global, undefined) { 'use strict'; @@ -172,6 +171,4 @@ global.hprose.WebSocketClient = WebSocketClient; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/Writer.js b/src/Writer.js index f5a5c11..c1c922d 100644 --- a/src/Writer.js +++ b/src/Writer.js @@ -13,12 +13,11 @@ * * * hprose Writer for HTML5. * * * - * LastModified: Aug 2, 2015 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function (global, undefined) { 'use strict'; @@ -525,6 +524,4 @@ global.hprose.Writer = Writer; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); diff --git a/src/setImmediate.js b/src/setImmediate.js index 7c233f4..c59ed46 100644 --- a/src/setImmediate.js +++ b/src/setImmediate.js @@ -13,12 +13,11 @@ * * * setImmediate for HTML5. * * * - * LastModified: Feb 20, 2016 * + * LastModified: Feb 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -/* jshint -W067 */ (function(global, undefined) { 'use strict'; if (global.setImmediate) return; @@ -30,7 +29,7 @@ var tasks = {}; function wrap(handler) { - var args = [].slice.call(arguments, 1); + var args = Array.prototype.slice.call(arguments, 1); return function() { handler.apply(undefined, args); }; @@ -154,7 +153,7 @@ // Don't get fooled by e.g. browserify environments. // For Node.js before 0.9 if (typeof(global.process) !== 'undefined' && - {}.toString.call(global.process) === '[object process]' && + Object.prototype.toString.call(global.process) === '[object process]' && !global.process.browser) { attachTo.setImmediate = polifill.nextTick(); } @@ -180,6 +179,4 @@ } attachTo.clearImmediate = clear; -}(function() { - return this || (1, eval)('this'); -}())); +})(this); From cc74c973a756cd11ec64915fbbbaa87573d51c09 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 23 Feb 2016 15:48:07 +0800 Subject: [PATCH 10/86] Update gulp file to remove eval. --- dist/hprose-html5.js | 4 +++- dist/hprose-html5.min.js | 1 + gulpfile.js | 11 +++++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 dist/hprose-html5.min.js diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 549369e..4916ecc 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,4 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,o=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(o(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],u=0,c=s.length;c>u;u++)n.set(s[u][0],s[u][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(o(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var o=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=o.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=o.createElement("iframe");e.style.display="none",o.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=o.documentElement;return function(){var t=a(arguments),r=o.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?o&&"onreadystatechange"in o.createElement("script")?l.setImmediate=u.readyStateChange():o&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():o&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&M(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||U&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return N(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function o(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return s(t)}catch(r){return o(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return F(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return s(a);var o=new r;return F(e,function(e,t){var r=i(e)?e:s(e);r.then(function(e){a[t]=e,0===--n&&o.resolve(a)},o.reject)}),o})}function h(){return l(arguments)}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return F(e,function(e){var r=i(e)?e:s(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),o=new r;return F(e,function(e,t){var r=i(e)?e:s(e);r.then(o.resolve,function(e){a[t]=e,0===--n&&o.reject(a)})}),o})}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return s(a);var o=new r;return F(e,function(e,t){var r=i(e)?e:s(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&o.resolve(a)})}),o})}function d(e){var r=x(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function y(e,t){var r=x(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function k(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){M(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function j(e,t,r){e?E(e,t,r):t.reject(r)}function O(e,t,r,n,a){function o(i){O(e,t,r,n,i)}function s(e){j(t,n,e)}if(i(a))return a===r?void s(new TypeError("Self resolution")):void a.then(o,s);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void s(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,o(e))},function(e){f&&(f=!1,s(e))})}catch(c){f&&(f=!1,s(c))}return}}e?E(e,n,a):n.resolve(a)}function A(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==C}}})}var C=0,I=1,R=2,U="Promise"in e,M=e.setImmediate,N=e.setTimeout,P=e.clearTimeout,F=Function.prototype.call.bind(Array.prototype.forEach),x=Function.prototype.call.bind(Array.prototype.slice);Object.defineProperties(r,{delayed:{value:a},error:{value:o},sync:{value:u},value:{value:s},all:{value:l},race:{value:g},resolve:{value:s},reject:{value:o},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:d},run:{value:y},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:k},reduceRight:{value:S}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:C,writable:!0},resolve:{value:function(e){if(this._state===C){this._state=I,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();O(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===C){this._state=R,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?E(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===I?e?O(e,t,this,n,this._value):n.resolve(this._value):this._state===R?t?E(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case C:return{state:"pending"};case I:return{state:"fulfilled",value:this._value};case R:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:s(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:s(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=N(function(){n.reject(t||new TimeoutError("timeout"))},e);return this.whenComplete(function(){P(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){N(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=x(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=x(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=x(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?k(this,e,t):k(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}}}),e.hprose.Future=r,e.hprose.Completer=A,e.hprose.resolved=s,e.hprose.rejected=o,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},U||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:s},reject:{value:o}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var o=r.charCodeAt(i+1);if(56320>a&&o>=56320&&57343>=o){var s=((1023&a)<<10|1023&o)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=o;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&o)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&o)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function o(e,t){for(var r=[],n=new Array(65535),i=0,a=0,o=e.length;t>i&&o>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(o>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(o>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):o(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return[e.subarray(0,i),i]}function c(e){for(var t=e.length,r=new Array(e.length),n=0;t>n;++n)r[n]=e[n];return r}function f(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function l(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case l:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function h(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case l:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var g=!0;try{String.fromCharCode.apply(String,new Uint8Array([1,2]))}catch(v){g=!1,Object.defineProperty(Array.prototype,"subarray",{value:Array.prototype.slice})}var p=new Uint8Array(0),d=1024,y=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(l.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=f(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,d),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case l:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=y(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=y(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){if(this._off+e>this._length&&(e=this._length-this._off),0===e)return"";var t=this._bytes.subarray(this._off,this._off+=e),r=g?t:c(t);if(1e5>e)return String.fromCharCode.apply(String,r);for(var n=65535&e,i=e>>16,a=new Array(n?i+1:i),o=0;i>o;++o)a[o]=String.fromCharCode.apply(String,r.subarray(o<<16,o+1<<16));return n&&(a[i]=String.fromCharCode.apply(String,r.subarray(i<<16,e))),a.join("")}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new l(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(l,"toString",{value:h}),e.hprose.BytesIO=l}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){o.set(e,t),a[t]=e}function r(e){return o.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),o=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=E.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&E.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?j:i(e)}})}function o(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case k:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(S.TagPoint),r.writeAsciiString(o)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.write(t),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.writeString(t),r.writeByte(S.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;n.writeByte(S.TagList),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a]);n.writeByte(S.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;r.writeByte(S.TagMap),a>0&&r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]]);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)}),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a]);n.writeByte(S.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var B=e.Map,k=e.hprose.BytesIO,S=e.hprose.Tags,E=e.hprose.ClassManager,j=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t), +i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return j(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return F(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return j(e);default:r(t)}}function j(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function P(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function F(e){var t=P(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return F(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),o=T(e);r[a]=o}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),o=T(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return E(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return F(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=500*(10-r.retry);return r.retry>10&&(a=500),e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function E(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),A(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function j(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Pe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==w;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Fe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function P(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function F(e,t,r){var n=U(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){o=p}o?i(o):e(a)},i)})}function x(e){return function(){e&&(Fe=!1,o(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){P(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Pe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===s.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(p>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(p>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Fe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)P(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&P(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Pe}function K(e){Pe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function oe(){return Re}function se(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(o(E,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var o=function(){N(rt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&o()}},callbacks:[n]},Qe[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(o){return h.error(o)}}},F)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ee(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function je(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Pe=!1,Fe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=F,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:_e},onError:{get:Q,set:G},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:oe,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:je},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol&&"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("The "+t.protocol+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=s.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var o in d)a.setRequestHeader(o,d[o]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var s=new Uint8Array(n.length);s.set(n),a.send(s.buffer)}return a}function f(e,t){var n=new s,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);o.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onProgress:{get:h,set:l},onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,o=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===o&&n.length>=i&&(o=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),o),i=4,o=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=o}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function s(e){o.call(this,e)}function u(e){o.call(this,e)}function c(e,t,r){function n(){return b}function o(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new s(T)),S.sendAndReceive(e,r,t)):((null===E||E.uri!==T.uri)&&(E=new u(T)),E.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,E=null;Object.defineProperties(this,{noDelay:{get:n,set:o},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(o.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var o=new n,s=this;return o.connect(i,a,r,this.client.options),o.onclose=function(){--s.size},++this.size,o}}}),s.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new TimeoutError("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u,0),c.writeInt32BE(n,4),c.write(t),a.send(c.buffer).then(function(e){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,o=n.timeout;o>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},o)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var s=t.length,u=new g(4+s);u.writeInt32BE(s,0),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizey?++y:y=0}function f(e,t){var r=new s;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?_.send(n):n.buffer.slice?_.send(n.buffer.slice(0,n.length)):_.send(n.buffer)}function l(e){b.resolve(e)}function h(e){var r=new s(e.data),n=r.readInt32BE(),i=m[n];if(delete m[n],i!==t&&(--w,i.resolve(r.read(r.length-4))),100>w&&T.length>0){++w;var a=T.shift();b.then(function(){f(a[0],a[1])})}0===w&&(B.keepAlive||d())}function g(e){m.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete m[r]}),w=0,_=null}function v(){b=new u,_=new WebSocket(B.uri),_.binaryType="arraybuffer",_.onopen=l,_.onmessage=h,_.onerror=r,_.onclose=g}function p(e,t){(null===_||_.readyState===WebSocket.CLOSING||_.readyState===WebSocket.CLOSED)&&v();var r=c(),n=new u;return m[r]=n,B.timeout>0&&(n=n.timeout(B.timeout).catchError(function(e){throw delete m[r],--w,e},function(e){return e instanceof TimeoutError; +})),100>w?(++w,b.then(function(){f(r,e)})):T.push([r,e]),t.oneway&&n.resolve(),n}function d(){null!==_&&(_.onopen=r,_.onmessage=r,_.onclose=r,_.close())}if(this.constructor!==n)return new n(e,i,a);o.call(this,e,i,a);var y=0,w=0,m=[],T=[],b=null,_=null,B=this;Object.defineProperties(this,{sendAndReceive:{value:p},close:{value:d}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.BytesIO,u=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,o=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var o=JSON.parse(a),s=new n,u=new i(s,!0),c=0,f=o.length;f>c;++c){var l=o[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e,t){var i=[],s=new n(e),u=new a(s,!1,!1),c=s.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=s.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=s.readByte()),c===r.TagTrue&&(c=s.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=o++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js new file mode 100644 index 0000000..55c0cad --- /dev/null +++ b/dist/hprose-html5.min.js @@ -0,0 +1 @@ +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index bf3df85..5211bb6 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -9,7 +9,7 @@ gulp.task('clear', function(){ del(['dist/hprose-html5.js']); }); -gulp.task('compress', ['clear'], function() { +gulp.task('uglify', ['clear'], function() { return gulp.src(['src/Init.js', 'src/HarmonyMaps.js', 'src/TimeoutError.js', @@ -32,10 +32,17 @@ gulp.task('compress', ['clear'], function() { .pipe(jshint.reporter()) .pipe(concat('hprose-html5.js')) .pipe(uglify()) - .pipe(lzmajs()) .pipe(gulp.dest('dist')); }); +gulp.task('compress', ['uglify'], function() { + return gulp.src(['dist/hprose-html5.js']) + .pipe(concat('hprose-html5.min.js')) + .pipe(lzmajs()) + .pipe(gulp.dest('dist')); +}); + + gulp.task('default', ['compress'], function() { return gulp.src(['src/CopyRight.js', 'dist/hprose-html5.js']) .pipe(concat('hprose-html5.js')) From 3482a6a07c2419bbc2c16804850c6e9d61b1510f Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 25 Feb 2016 16:30:07 +0800 Subject: [PATCH 11/86] Fixed retry. --- src/Client.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Client.js b/src/Client.js index d65283f..257f736 100644 --- a/src/Client.js +++ b/src/Client.js @@ -119,8 +119,7 @@ } if (context.idempotent) { if (--context.retry >= 0) { - var interval = (10 - context.retry) * 500; - if (context.retry > 10) interval = 500; + var interval = (context.retry >= 10) ? 500 : (10 - context.retry) * 500; global.setTimeout(function() { sendAndReceive(data, context, onsuccess, onerror); }, interval); From 5882d20b3233c1afcb1401e925d598300532de7b Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 25 Feb 2016 18:34:01 +0800 Subject: [PATCH 12/86] Added Client.create TCP support. --- dist/hprose-html5.js | 6 +++--- dist/hprose-html5.min.js | 2 +- src/Client.js | 22 +++++++++++++++++----- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 4916ecc..7a0cb7c 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,o=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(o(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],u=0,c=s.length;c>u;u++)n.set(s[u][0],s[u][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(o(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var o=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=o.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=o.createElement("iframe");e.style.display="none",o.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=o.documentElement;return function(){var t=a(arguments),r=o.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?o&&"onreadystatechange"in o.createElement("script")?l.setImmediate=u.readyStateChange():o&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():o&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&M(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||U&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return N(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function o(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return s(t)}catch(r){return o(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return F(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return s(a);var o=new r;return F(e,function(e,t){var r=i(e)?e:s(e);r.then(function(e){a[t]=e,0===--n&&o.resolve(a)},o.reject)}),o})}function h(){return l(arguments)}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return F(e,function(e){var r=i(e)?e:s(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),o=new r;return F(e,function(e,t){var r=i(e)?e:s(e);r.then(o.resolve,function(e){a[t]=e,0===--n&&o.reject(a)})}),o})}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return s(a);var o=new r;return F(e,function(e,t){var r=i(e)?e:s(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&o.resolve(a)})}),o})}function d(e){var r=x(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function y(e,t){var r=x(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function k(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){M(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function j(e,t,r){e?E(e,t,r):t.reject(r)}function O(e,t,r,n,a){function o(i){O(e,t,r,n,i)}function s(e){j(t,n,e)}if(i(a))return a===r?void s(new TypeError("Self resolution")):void a.then(o,s);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void s(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,o(e))},function(e){f&&(f=!1,s(e))})}catch(c){f&&(f=!1,s(c))}return}}e?E(e,n,a):n.resolve(a)}function A(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==C}}})}var C=0,I=1,R=2,U="Promise"in e,M=e.setImmediate,N=e.setTimeout,P=e.clearTimeout,F=Function.prototype.call.bind(Array.prototype.forEach),x=Function.prototype.call.bind(Array.prototype.slice);Object.defineProperties(r,{delayed:{value:a},error:{value:o},sync:{value:u},value:{value:s},all:{value:l},race:{value:g},resolve:{value:s},reject:{value:o},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:d},run:{value:y},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:k},reduceRight:{value:S}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:C,writable:!0},resolve:{value:function(e){if(this._state===C){this._state=I,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();O(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===C){this._state=R,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?E(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===I?e?O(e,t,this,n,this._value):n.resolve(this._value):this._state===R?t?E(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case C:return{state:"pending"};case I:return{state:"fulfilled",value:this._value};case R:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:s(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:s(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=N(function(){n.reject(t||new TimeoutError("timeout"))},e);return this.whenComplete(function(){P(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){N(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=x(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=x(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=x(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?k(this,e,t):k(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}}}),e.hprose.Future=r,e.hprose.Completer=A,e.hprose.resolved=s,e.hprose.rejected=o,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},U||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:s},reject:{value:o}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var o=r.charCodeAt(i+1);if(56320>a&&o>=56320&&57343>=o){var s=((1023&a)<<10|1023&o)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=o;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&o)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&o)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function o(e,t){for(var r=[],n=new Array(65535),i=0,a=0,o=e.length;t>i&&o>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(o>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(o>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):o(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return[e.subarray(0,i),i]}function c(e){for(var t=e.length,r=new Array(e.length),n=0;t>n;++n)r[n]=e[n];return r}function f(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function l(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case l:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function h(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case l:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var g=!0;try{String.fromCharCode.apply(String,new Uint8Array([1,2]))}catch(v){g=!1,Object.defineProperty(Array.prototype,"subarray",{value:Array.prototype.slice})}var p=new Uint8Array(0),d=1024,y=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(l.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=f(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,d),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case l:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=y(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=y(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){if(this._off+e>this._length&&(e=this._length-this._off),0===e)return"";var t=this._bytes.subarray(this._off,this._off+=e),r=g?t:c(t);if(1e5>e)return String.fromCharCode.apply(String,r);for(var n=65535&e,i=e>>16,a=new Array(n?i+1:i),o=0;i>o;++o)a[o]=String.fromCharCode.apply(String,r.subarray(o<<16,o+1<<16));return n&&(a[i]=String.fromCharCode.apply(String,r.subarray(i<<16,e))),a.join("")}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new l(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(l,"toString",{value:h}),e.hprose.BytesIO=l}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){o.set(e,t),a[t]=e}function r(e){return o.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),o=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=E.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&E.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?j:i(e)}})}function o(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case k:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(S.TagPoint),r.writeAsciiString(o)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.write(t),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.writeString(t),r.writeByte(S.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;n.writeByte(S.TagList),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a]);n.writeByte(S.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;r.writeByte(S.TagMap),a>0&&r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]]);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)}),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a]);n.writeByte(S.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var B=e.Map,k=e.hprose.BytesIO,S=e.hprose.Tags,E=e.hprose.ClassManager,j=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t), -i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return j(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return F(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return j(e);default:r(t)}}function j(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function P(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function F(e){var t=P(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return F(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),o=T(e);r[a]=o}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),o=T(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return E(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return F(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=500*(10-r.retry);return r.retry>10&&(a=500),e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function E(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),A(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function j(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Pe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==w;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Fe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function P(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function F(e,t,r){var n=U(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){o=p}o?i(o):e(a)},i)})}function x(e){return function(){e&&(Fe=!1,o(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){P(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Pe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===s.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(p>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(p>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Fe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)P(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&P(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Pe}function K(e){Pe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function oe(){return Re}function se(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(o(E,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var o=function(){N(rt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&o()}},callbacks:[n]},Qe[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(o){return h.error(o)}}},F)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ee(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function je(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Pe=!1,Fe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=F,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:_e},onError:{get:Q,set:G},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:oe,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:je},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol&&"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("The "+t.protocol+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=s.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var o in d)a.setRequestHeader(o,d[o]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var s=new Uint8Array(n.length);s.set(n),a.send(s.buffer)}return a}function f(e,t){var n=new s,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);o.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onProgress:{get:h,set:l},onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,o=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===o&&n.length>=i&&(o=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),o),i=4,o=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=o}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function s(e){o.call(this,e)}function u(e){o.call(this,e)}function c(e,t,r){function n(){return b}function o(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new s(T)),S.sendAndReceive(e,r,t)):((null===E||E.uri!==T.uri)&&(E=new u(T)),E.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,E=null;Object.defineProperties(this,{noDelay:{get:n,set:o},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(o.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var o=new n,s=this;return o.connect(i,a,r,this.client.options),o.onclose=function(){--s.size},++this.size,o}}}),s.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new TimeoutError("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u,0),c.writeInt32BE(n,4),c.write(t),a.send(c.buffer).then(function(e){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,o=n.timeout;o>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},o)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var s=t.length,u=new g(4+s);u.writeInt32BE(s,0),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizey?++y:y=0}function f(e,t){var r=new s;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?_.send(n):n.buffer.slice?_.send(n.buffer.slice(0,n.length)):_.send(n.buffer)}function l(e){b.resolve(e)}function h(e){var r=new s(e.data),n=r.readInt32BE(),i=m[n];if(delete m[n],i!==t&&(--w,i.resolve(r.read(r.length-4))),100>w&&T.length>0){++w;var a=T.shift();b.then(function(){f(a[0],a[1])})}0===w&&(B.keepAlive||d())}function g(e){m.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete m[r]}),w=0,_=null}function v(){b=new u,_=new WebSocket(B.uri),_.binaryType="arraybuffer",_.onopen=l,_.onmessage=h,_.onerror=r,_.onclose=g}function p(e,t){(null===_||_.readyState===WebSocket.CLOSING||_.readyState===WebSocket.CLOSED)&&v();var r=c(),n=new u;return m[r]=n,B.timeout>0&&(n=n.timeout(B.timeout).catchError(function(e){throw delete m[r],--w,e},function(e){return e instanceof TimeoutError; -})),100>w?(++w,b.then(function(){f(r,e)})):T.push([r,e]),t.oneway&&n.resolve(),n}function d(){null!==_&&(_.onopen=r,_.onmessage=r,_.onclose=r,_.close())}if(this.constructor!==n)return new n(e,i,a);o.call(this,e,i,a);var y=0,w=0,m=[],T=[],b=null,_=null,B=this;Object.defineProperties(this,{sendAndReceive:{value:p},close:{value:d}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.BytesIO,u=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,o=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var o=JSON.parse(a),s=new n,u=new i(s,!0),c=0,f=o.length;f>c;++c){var l=o[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e,t){var i=[],s=new n(e),u=new a(s,!1,!1),c=s.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=s.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=s.readByte()),c===r.TagTrue&&(c=s.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=o++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,s=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(s(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var o=arguments[0],u=0,c=o.length;c>u;u++)n.set(o[u][0],o[u][1]);return n}),!r){var o=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(s(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:o(),"function":o(),unknown:o(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var s=e.document,o=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=s.createTextNode(""),r=new o(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=s.createElement("iframe");e.style.display="none",s.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=s.documentElement;return function(){var t=a(arguments),r=s.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?s&&"onreadystatechange"in s.createElement("script")?l.setImmediate=u.readyStateChange():s&&o?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():s&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&M(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||U&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return N(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function o(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return o(t)}catch(r){return s(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return F(e,function(){++t}),t}function l(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return F(e,function(e,t){var r=i(e)?e:o(e);r.then(function(e){a[t]=e,0===--n&&s.resolve(a)},s.reject)}),s})}function h(){return l(arguments)}function g(e){return e=i(e)?e:o(e),e.then(function(e){var t=new r;return F(e,function(e){var r=i(e)?e:o(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),s=new r;return F(e,function(e,t){var r=i(e)?e:o(e);r.then(s.resolve,function(e){a[t]=e,0===--n&&s.reject(a)})}),s})}function p(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return F(e,function(e,t){var r=i(e)?e:o(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&s.resolve(a)})}),s})}function d(e){var r=x(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function y(e,t){var r=x(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function k(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){M(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function j(e,t,r){e?E(e,t,r):t.reject(r)}function O(e,t,r,n,a){function s(i){O(e,t,r,n,i)}function o(e){j(t,n,e)}if(i(a))return a===r?void o(new TypeError("Self resolution")):void a.then(s,o);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void o(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,s(e))},function(e){f&&(f=!1,o(e))})}catch(c){f&&(f=!1,o(c))}return}}e?E(e,n,a):n.resolve(a)}function A(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==C}}})}var C=0,I=1,R=2,U="Promise"in e,M=e.setImmediate,N=e.setTimeout,P=e.clearTimeout,F=Function.prototype.call.bind(Array.prototype.forEach),x=Function.prototype.call.bind(Array.prototype.slice);Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:u},value:{value:o},all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:d},run:{value:y},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:k},reduceRight:{value:S}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:C,writable:!0},resolve:{value:function(e){if(this._state===C){this._state=I,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();O(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===C){this._state=R,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?E(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===I?e?O(e,t,this,n,this._value):n.resolve(this._value):this._state===R?t?E(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case C:return{state:"pending"};case I:return{state:"fulfilled",value:this._value};case R:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:o(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:o(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=N(function(){n.reject(t||new TimeoutError("timeout"))},e);return this.whenComplete(function(){P(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){N(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=x(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=x(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=x(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?k(this,e,t):k(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}}}),e.hprose.Future=r,e.hprose.Completer=A,e.hprose.resolved=o,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},U||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var s=r.charCodeAt(i+1);if(56320>a&&s>=56320&&57343>=s){var o=((1023&a)<<10|1023&s)+65536;e[t++]=240|o>>18,e[t++]=128|o>>12&63,e[t++]=128|o>>6&63,e[t++]=128|63&o,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=s;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&s)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&s)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));r[n++]=o>>10&1023|55296,r[n]=1023&o|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function s(e,t){for(var r=[],n=new Array(65535),i=0,a=0,s=e.length;t>i&&s>a;i++){var o=e[a++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=o;break;case 12:case 13:if(!(s>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&o)<<6|63&e[a++];break;case 14:if(!(s>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&o)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(s>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&o)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function o(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):s(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return[e.subarray(0,i),i]}function c(e){for(var t=e.length,r=new Array(e.length),n=0;t>n;++n)r[n]=e[n];return r}function f(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function l(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case l:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function h(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case l:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return o(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var g=!0;try{String.fromCharCode.apply(String,new Uint8Array([1,2]))}catch(v){g=!1,Object.defineProperty(Array.prototype,"subarray",{value:Array.prototype.slice})}var p=new Uint8Array(0),d=1024,y=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(l.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=f(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,d),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case l:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=y(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=y(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=o(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=o(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){if(this._off+e>this._length&&(e=this._length-this._off),0===e)return"";var t=this._bytes.subarray(this._off,this._off+=e),r=g?t:c(t);if(1e5>e)return String.fromCharCode.apply(String,r);for(var n=65535&e,i=e>>16,a=new Array(n?i+1:i),s=0;i>s;++s)a[s]=String.fromCharCode.apply(String,r.subarray(s<<16,s+1<<16));return n&&(a[i]=String.fromCharCode.apply(String,r.subarray(i<<16,e))),a.join("")}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=o(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return o(this.bytes,this._length)[0]}},clone:{value:function(){return new l(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(l,"toString",{value:h}),e.hprose.BytesIO=l}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){s.set(e,t),a[t]=e}function r(e){return s.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),s=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=E.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&E.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?j:i(e)}})}function s(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void o(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case k:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function o(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),s=("00"+t.getUTCHours()).slice(-2),o=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),s=("00"+t.getHours()).slice(-2),o=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===s&&"00"===o&&"00"===u&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),s=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==s&&(r.writeByte(S.TagPoint),r.writeAsciiString(s)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.write(t),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.writeString(t),r.writeByte(S.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;n.writeByte(S.TagList),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a]);n.writeByte(S.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;r.writeByte(S.TagMap),a>0&&r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var o=0;a>o;o++)s(e,n[o]),s(e,t[n[o]]);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){s(e,r),s(e,t)}),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,o=r(t);if(o in e._classref)i=e._classref[o],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,o,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)s(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a]);n.writeByte(S.TagClosebrace);var s=e._fieldsref.length;return e._classref[t]=s,e._fieldsref[s]=r,s}var B=e.Map,k=e.hprose.BytesIO,S=e.hprose.Tags,E=e.hprose.ClassManager,j=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){s(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){d(this,e,s)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,s)}},writeMap:{value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:s(e,t);break;case ee.TagDate:case ee.TagTime:o(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t), +i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return j(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return F(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return j(e);default:r(t)}}function j(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),s=r.readByte();if(s===ee.TagTime){var o=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;s=r.readByte(),s===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(n,i,a,o,u,c,f)):new Date(n,i,a,o,u,c,f)}else t=s===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),s=0,o=r.readByte();return o===ee.TagPoint&&(s=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,s)):new Date(1970,0,1,n,i,a,s),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function P(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function F(e){var t=P(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return F(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r[a]=s}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r.set(a,s)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return E(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return F(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function E(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case o.TagError:r=new Error(i.readString());break;case o.TagFunctions:var s=i.readList();i.checkTag(o.TagEnd),A(e,s);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function j(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var s=0;sn;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Pe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var s in a)s in i&&(i[s]=a[s])}for(var o=0,u=r.length;u>o&&typeof r[o]!==w;++o);if(o===u)return i;var c=r.splice(o,u-o);for(i.onsuccess=c[0],u=c.length,o=1;u>o;++o){var f=c[o];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(o.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Fe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function P(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function F(e,t,r){var n=U(e,t,r);return n.writeByte(o.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,s=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===o.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===o.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===o.TagError&&(s=new Error(h.readString()),g=f.readByte());g!==o.TagEnd&&(s=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){s=p}s?i(s):e(a)},i)})}function x(e){return function(){e&&(Fe=!1,s(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(s){r.onerror&&r.onerror(e,s),i(s)}n(a)}catch(s){i(s)}},function(t){P(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Pe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(o.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,s=new c(r),f=new l(s,!1),h=s.readByte();try{for(;h!==o.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===o.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(o.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=s.readByte(),h===o.TagArgument){if(p>=u.Raw)g.writeByte(o.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=s.readByte()}}else h===o.TagError&&(p>=u.Raw?(g.writeByte(o.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=s.readByte());if([o.TagEnd,o.TagResult,o.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(o.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Fe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)P(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&P(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Pe}function K(e){Pe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function se(){return Re}function oe(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(s(E,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var s=2;i>s;s++)t.push(arguments[s])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var s=function(){N(rt,e,[r,a.handler,s,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,o=i.length;o>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&s()}},callbacks:[n]},Qe[e][r]=a,s()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(s){return h.error(s)}}},F)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ee(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function je(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Pe=!1,Fe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=F,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:_e},onError:{get:Q,set:G},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:se,set:oe},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:je},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var s=e.setImmediate,o=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=o.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var s in d)a.setRequestHeader(s,d[s]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var o=new Uint8Array(n.length);o.set(n),a.send(o.buffer)}return a}function f(e,t){var n=new o,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);s.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onProgress:{get:h,set:l},onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,s=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===s&&n.length>=i&&(s=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),s),i=4,s=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=s}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function s(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){s.call(this,e)}function u(e){s.call(this,e)}function c(e,t,r){function n(){return b}function s(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new o(T)),S.sendAndReceive(e,r,t)):((null===E||E.uri!==T.uri)&&(E=new u(T)),E.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,E=null;Object.defineProperties(this,{noDelay:{get:n,set:s},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(s.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var s=new n,o=this;return s.connect(i,a,r,this.client.options),s.onclose=function(){--o.size},++this.size,s}}}),o.prototype=Object.create(s.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var s=this,o=i.timeout;o>0&&(a.timeoutIds[n]=e.setTimeout(function(){s.clean(a,n),0===a.count&&s.recycle(a),r.reject(new TimeoutError("timeout"))},o)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u,0),c.writeInt32BE(n,4),c.write(t),a.send(c.buffer).then(function(e){s.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,s=n.timeout;s>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},s)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var o=t.length,u=new g(4+o);u.writeInt32BE(o,0),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizey?++y:y=0}function f(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?_.send(n):n.buffer.slice?_.send(n.buffer.slice(0,n.length)):_.send(n.buffer)}function l(e){b.resolve(e)}function h(e){var r=new o(e.data),n=r.readInt32BE(),i=m[n];if(delete m[n],i!==t&&(--w,i.resolve(r.read(r.length-4))),100>w&&T.length>0){++w;var a=T.shift();b.then(function(){f(a[0],a[1])})}0===w&&(B.keepAlive||d())}function g(e){m.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete m[r]}),w=0,_=null}function v(){b=new u,_=new WebSocket(B.uri),_.binaryType="arraybuffer",_.onopen=l,_.onmessage=h,_.onerror=r,_.onclose=g}function p(e,t){(null===_||_.readyState===WebSocket.CLOSING||_.readyState===WebSocket.CLOSED)&&v();var r=c(),n=new u;return m[r]=n, +B.timeout>0&&(n=n.timeout(B.timeout).catchError(function(e){throw delete m[r],--w,e},function(e){return e instanceof TimeoutError})),100>w?(++w,b.then(function(){f(r,e)})):T.push([r,e]),t.oneway&&n.resolve(),n}function d(){null!==_&&(_.onopen=r,_.onmessage=r,_.onclose=r,_.close())}if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var y=0,w=0,m=[],T=[],b=null,_=null,B=this;Object.defineProperties(this,{sendAndReceive:{value:p},close:{value:d}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.BytesIO,u=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,s=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var s=JSON.parse(a),o=new n,u=new i(o,!0),c=0,f=s.length;f>c;++c){var l=s[c];l.error?(o.writeByte(r.TagError),u.writeString(l.error.message)):(o.writeByte(r.TagResult),u.serialize(l.result))}return o.writeByte(r.TagEnd),o.bytes},t.prototype.outputFilter=function(e,t){var i=[],o=new n(e),u=new a(o,!1,!1),c=o.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=o.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=o.readByte()),c===r.TagTrue&&(c=o.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 55c0cad..467d164 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/src/Client.js b/src/Client.js index 257f736..cdd53cb 100644 --- a/src/Client.js +++ b/src/Client.js @@ -1114,13 +1114,21 @@ function checkuri(uri) { var parser = document.createElement('a'); parser.href = uri; - if (parser.protocol === 'http:' || - parser.protocol === 'https:' || - parser.protocol === 'ws:' || - parser.protocol === 'wss:') { + var protocol = parser.protocol; + if (protocol === 'http:' || + protocol === 'https:' || + protocol === 'tcp:' || + protocol === 'tcp4:'|| + protocol === 'tcp6:' || + protocol === 'tcps:' || + protocol === 'tcp4s:' || + protocol === 'tcp6s:' || + protocol === 'tls:' || + protocol === 'ws:' || + protocol === 'wss:') { return; } - throw new Error('The ' + parser.protocol + ' client isn\'t implemented.'); + throw new Error('The ' + protocol + ' client isn\'t implemented.'); } function create(uri, functions, settings) { @@ -1128,6 +1136,10 @@ return global.hprose.HttpClient.create(uri, functions, settings); } catch(e) {} + try { + return global.hprose.TcpClient.create(uri, functions, settings); + } + catch(e) {} try { return global.hprose.WebSocketClient.create(uri, functions, settings); } From bfb74140ecd629e80375857e41f52edd8abc7b4b Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 25 Feb 2016 23:21:35 +0800 Subject: [PATCH 13/86] Removed onError and onProgress. --- bower.json | 2 +- dist/hprose-html5.js | 8 ++++---- dist/hprose-html5.min.js | 2 +- package.json | 2 +- src/Client.js | 1 - src/CopyRight.js | 2 +- src/HttpClient.js | 3 +-- 7 files changed, 9 insertions(+), 11 deletions(-) diff --git a/bower.json b/bower.json index 1e576e4..02b99b0 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.7", + "version": "2.0.8", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 7a0cb7c..a8ef560 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.7 +// Hprose for HTML5 v2.0.8 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,s=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(s(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var o=arguments[0],u=0,c=o.length;c>u;u++)n.set(o[u][0],o[u][1]);return n}),!r){var o=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(s(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:o(),"function":o(),unknown:o(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var s=e.document,o=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=s.createTextNode(""),r=new o(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=s.createElement("iframe");e.style.display="none",s.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=s.documentElement;return function(){var t=a(arguments),r=s.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?s&&"onreadystatechange"in s.createElement("script")?l.setImmediate=u.readyStateChange():s&&o?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():s&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&M(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||U&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return N(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function o(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return o(t)}catch(r){return s(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return F(e,function(){++t}),t}function l(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return F(e,function(e,t){var r=i(e)?e:o(e);r.then(function(e){a[t]=e,0===--n&&s.resolve(a)},s.reject)}),s})}function h(){return l(arguments)}function g(e){return e=i(e)?e:o(e),e.then(function(e){var t=new r;return F(e,function(e){var r=i(e)?e:o(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),s=new r;return F(e,function(e,t){var r=i(e)?e:o(e);r.then(s.resolve,function(e){a[t]=e,0===--n&&s.reject(a)})}),s})}function p(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return F(e,function(e,t){var r=i(e)?e:o(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&s.resolve(a)})}),s})}function d(e){var r=x(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function y(e,t){var r=x(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function k(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){M(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function j(e,t,r){e?E(e,t,r):t.reject(r)}function O(e,t,r,n,a){function s(i){O(e,t,r,n,i)}function o(e){j(t,n,e)}if(i(a))return a===r?void o(new TypeError("Self resolution")):void a.then(s,o);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void o(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,s(e))},function(e){f&&(f=!1,o(e))})}catch(c){f&&(f=!1,o(c))}return}}e?E(e,n,a):n.resolve(a)}function A(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==C}}})}var C=0,I=1,R=2,U="Promise"in e,M=e.setImmediate,N=e.setTimeout,P=e.clearTimeout,F=Function.prototype.call.bind(Array.prototype.forEach),x=Function.prototype.call.bind(Array.prototype.slice);Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:u},value:{value:o},all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:d},run:{value:y},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:k},reduceRight:{value:S}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:C,writable:!0},resolve:{value:function(e){if(this._state===C){this._state=I,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();O(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===C){this._state=R,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?E(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===I?e?O(e,t,this,n,this._value):n.resolve(this._value):this._state===R?t?E(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case C:return{state:"pending"};case I:return{state:"fulfilled",value:this._value};case R:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:o(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:o(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=N(function(){n.reject(t||new TimeoutError("timeout"))},e);return this.whenComplete(function(){P(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){N(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=x(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=x(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=x(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?k(this,e,t):k(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}}}),e.hprose.Future=r,e.hprose.Completer=A,e.hprose.resolved=o,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},U||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var s=r.charCodeAt(i+1);if(56320>a&&s>=56320&&57343>=s){var o=((1023&a)<<10|1023&s)+65536;e[t++]=240|o>>18,e[t++]=128|o>>12&63,e[t++]=128|o>>6&63,e[t++]=128|63&o,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=s;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&s)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&s)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));r[n++]=o>>10&1023|55296,r[n]=1023&o|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function s(e,t){for(var r=[],n=new Array(65535),i=0,a=0,s=e.length;t>i&&s>a;i++){var o=e[a++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=o;break;case 12:case 13:if(!(s>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&o)<<6|63&e[a++];break;case 14:if(!(s>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&o)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(s>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&o)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function o(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):s(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return[e.subarray(0,i),i]}function c(e){for(var t=e.length,r=new Array(e.length),n=0;t>n;++n)r[n]=e[n];return r}function f(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function l(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case l:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function h(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case l:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return o(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var g=!0;try{String.fromCharCode.apply(String,new Uint8Array([1,2]))}catch(v){g=!1,Object.defineProperty(Array.prototype,"subarray",{value:Array.prototype.slice})}var p=new Uint8Array(0),d=1024,y=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(l.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=f(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,d),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case l:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=y(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=y(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=o(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=o(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){if(this._off+e>this._length&&(e=this._length-this._off),0===e)return"";var t=this._bytes.subarray(this._off,this._off+=e),r=g?t:c(t);if(1e5>e)return String.fromCharCode.apply(String,r);for(var n=65535&e,i=e>>16,a=new Array(n?i+1:i),s=0;i>s;++s)a[s]=String.fromCharCode.apply(String,r.subarray(s<<16,s+1<<16));return n&&(a[i]=String.fromCharCode.apply(String,r.subarray(i<<16,e))),a.join("")}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=o(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return o(this.bytes,this._length)[0]}},clone:{value:function(){return new l(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(l,"toString",{value:h}),e.hprose.BytesIO=l}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){s.set(e,t),a[t]=e}function r(e){return s.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),s=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=E.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&E.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?j:i(e)}})}function s(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void o(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case k:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function o(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),s=("00"+t.getUTCHours()).slice(-2),o=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),s=("00"+t.getHours()).slice(-2),o=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===s&&"00"===o&&"00"===u&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),s=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==s&&(r.writeByte(S.TagPoint),r.writeAsciiString(s)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.write(t),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.writeString(t),r.writeByte(S.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;n.writeByte(S.TagList),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a]);n.writeByte(S.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;r.writeByte(S.TagMap),a>0&&r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var o=0;a>o;o++)s(e,n[o]),s(e,t[n[o]]);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){s(e,r),s(e,t)}),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,o=r(t);if(o in e._classref)i=e._classref[o],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,o,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)s(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a]);n.writeByte(S.TagClosebrace);var s=e._fieldsref.length;return e._classref[t]=s,e._fieldsref[s]=r,s}var B=e.Map,k=e.hprose.BytesIO,S=e.hprose.Tags,E=e.hprose.ClassManager,j=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){s(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){d(this,e,s)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,s)}},writeMap:{value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:s(e,t);break;case ee.TagDate:case ee.TagTime:o(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t), -i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return j(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return F(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return j(e);default:r(t)}}function j(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),s=r.readByte();if(s===ee.TagTime){var o=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;s=r.readByte(),s===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(n,i,a,o,u,c,f)):new Date(n,i,a,o,u,c,f)}else t=s===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),s=0,o=r.readByte();return o===ee.TagPoint&&(s=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,s)):new Date(1970,0,1,n,i,a,s),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function P(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function F(e){var t=P(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return F(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r[a]=s}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r.set(a,s)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return E(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return F(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function E(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case o.TagError:r=new Error(i.readString());break;case o.TagFunctions:var s=i.readList();i.checkTag(o.TagEnd),A(e,s);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function j(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var s=0;sn;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Pe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var s in a)s in i&&(i[s]=a[s])}for(var o=0,u=r.length;u>o&&typeof r[o]!==w;++o);if(o===u)return i;var c=r.splice(o,u-o);for(i.onsuccess=c[0],u=c.length,o=1;u>o;++o){var f=c[o];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(o.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Fe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function P(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function F(e,t,r){var n=U(e,t,r);return n.writeByte(o.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,s=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===o.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===o.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===o.TagError&&(s=new Error(h.readString()),g=f.readByte());g!==o.TagEnd&&(s=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){s=p}s?i(s):e(a)},i)})}function x(e){return function(){e&&(Fe=!1,s(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(s){r.onerror&&r.onerror(e,s),i(s)}n(a)}catch(s){i(s)}},function(t){P(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Pe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(o.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,s=new c(r),f=new l(s,!1),h=s.readByte();try{for(;h!==o.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===o.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(o.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=s.readByte(),h===o.TagArgument){if(p>=u.Raw)g.writeByte(o.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=s.readByte()}}else h===o.TagError&&(p>=u.Raw?(g.writeByte(o.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=s.readByte());if([o.TagEnd,o.TagResult,o.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(o.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Fe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)P(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&P(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Pe}function K(e){Pe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function se(){return Re}function oe(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(s(E,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var s=2;i>s;s++)t.push(arguments[s])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var s=function(){N(rt,e,[r,a.handler,s,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,o=i.length;o>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&s()}},callbacks:[n]},Qe[e][r]=a,s()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(s){return h.error(s)}}},F)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ee(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function je(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Pe=!1,Fe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=F,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:_e},onError:{get:Q,set:G},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:se,set:oe},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:je},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var s=e.setImmediate,o=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=o.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var s in d)a.setRequestHeader(s,d[s]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var o=new Uint8Array(n.length);o.set(n),a.send(o.buffer)}return a}function f(e,t){var n=new o,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);s.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onProgress:{get:h,set:l},onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,s=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===s&&n.length>=i&&(s=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),s),i=4,s=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=s}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function s(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){s.call(this,e)}function u(e){s.call(this,e)}function c(e,t,r){function n(){return b}function s(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new o(T)),S.sendAndReceive(e,r,t)):((null===E||E.uri!==T.uri)&&(E=new u(T)),E.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,E=null;Object.defineProperties(this,{noDelay:{get:n,set:s},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(s.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var s=new n,o=this;return s.connect(i,a,r,this.client.options),s.onclose=function(){--o.size},++this.size,s}}}),o.prototype=Object.create(s.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var s=this,o=i.timeout;o>0&&(a.timeoutIds[n]=e.setTimeout(function(){s.clean(a,n),0===a.count&&s.recycle(a),r.reject(new TimeoutError("timeout"))},o)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u,0),c.writeInt32BE(n,4),c.write(t),a.send(c.buffer).then(function(e){s.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,s=n.timeout;s>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},s)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var o=t.length,u=new g(4+o);u.writeInt32BE(o,0),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizey?++y:y=0}function f(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?_.send(n):n.buffer.slice?_.send(n.buffer.slice(0,n.length)):_.send(n.buffer)}function l(e){b.resolve(e)}function h(e){var r=new o(e.data),n=r.readInt32BE(),i=m[n];if(delete m[n],i!==t&&(--w,i.resolve(r.read(r.length-4))),100>w&&T.length>0){++w;var a=T.shift();b.then(function(){f(a[0],a[1])})}0===w&&(B.keepAlive||d())}function g(e){m.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete m[r]}),w=0,_=null}function v(){b=new u,_=new WebSocket(B.uri),_.binaryType="arraybuffer",_.onopen=l,_.onmessage=h,_.onerror=r,_.onclose=g}function p(e,t){(null===_||_.readyState===WebSocket.CLOSING||_.readyState===WebSocket.CLOSED)&&v();var r=c(),n=new u;return m[r]=n, -B.timeout>0&&(n=n.timeout(B.timeout).catchError(function(e){throw delete m[r],--w,e},function(e){return e instanceof TimeoutError})),100>w?(++w,b.then(function(){f(r,e)})):T.push([r,e]),t.oneway&&n.resolve(),n}function d(){null!==_&&(_.onopen=r,_.onmessage=r,_.onclose=r,_.close())}if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var y=0,w=0,m=[],T=[],b=null,_=null,B=this;Object.defineProperties(this,{sendAndReceive:{value:p},close:{value:d}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.BytesIO,u=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,s=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var s=JSON.parse(a),o=new n,u=new i(o,!0),c=0,f=s.length;f>c;++c){var l=s[c];l.error?(o.writeByte(r.TagError),u.writeString(l.error.message)):(o.writeByte(r.TagResult),u.serialize(l.result))}return o.writeByte(r.TagEnd),o.bytes},t.prototype.outputFilter=function(e,t){var i=[],o=new n(e),u=new a(o,!1,!1),c=o.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=o.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=o.readByte()),c===r.TagTrue&&(c=o.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,s=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(s(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var o=arguments[0],u=0,c=o.length;c>u;u++)n.set(o[u][0],o[u][1]);return n}),!r){var o=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(s(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:o(),"function":o(),unknown:o(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var s=e.document,o=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=s.createTextNode(""),r=new o(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=s.createElement("iframe");e.style.display="none",s.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=s.documentElement;return function(){var t=a(arguments),r=s.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?s&&"onreadystatechange"in s.createElement("script")?l.setImmediate=u.readyStateChange():s&&o?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():s&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&M(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||U&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return N(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function o(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return o(t)}catch(r){return s(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return P(e,function(){++t}),t}function l(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(function(e){a[t]=e,0===--n&&s.resolve(a)},s.reject)}),s})}function h(){return l(arguments)}function g(e){return e=i(e)?e:o(e),e.then(function(e){var t=new r;return P(e,function(e){var r=i(e)?e:o(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(s.resolve,function(e){a[t]=e,0===--n&&s.reject(a)})}),s})}function p(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&s.resolve(a)})}),s})}function d(e){var r=x(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function y(e,t){var r=x(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function k(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function j(e,t,r){M(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function E(e,t,r){e?j(e,t,r):t.reject(r)}function O(e,t,r,n,a){function s(i){O(e,t,r,n,i)}function o(e){E(t,n,e)}if(i(a))return a===r?void o(new TypeError("Self resolution")):void a.then(s,o);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void o(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,s(e))},function(e){f&&(f=!1,o(e))})}catch(c){f&&(f=!1,o(c))}return}}e?j(e,n,a):n.resolve(a)}function A(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==C}}})}var C=0,I=1,R=2,U="Promise"in e,M=e.setImmediate,N=e.setTimeout,F=e.clearTimeout,P=Function.prototype.call.bind(Array.prototype.forEach),x=Function.prototype.call.bind(Array.prototype.slice);Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:u},value:{value:o},all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:d},run:{value:y},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:k},reduceRight:{value:S}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:C,writable:!0},resolve:{value:function(e){if(this._state===C){this._state=I,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();O(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===C){this._state=R,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?j(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===I?e?O(e,t,this,n,this._value):n.resolve(this._value):this._state===R?t?j(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case C:return{state:"pending"};case I:return{state:"fulfilled",value:this._value};case R:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:o(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:o(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=N(function(){n.reject(t||new TimeoutError("timeout"))},e);return this.whenComplete(function(){F(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){N(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=x(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=x(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=x(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?k(this,e,t):k(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}}}),e.hprose.Future=r,e.hprose.Completer=A,e.hprose.resolved=o,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},U||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var s=r.charCodeAt(i+1);if(56320>a&&s>=56320&&57343>=s){var o=((1023&a)<<10|1023&s)+65536;e[t++]=240|o>>18,e[t++]=128|o>>12&63,e[t++]=128|o>>6&63,e[t++]=128|63&o,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=s;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&s)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&s)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));r[n++]=o>>10&1023|55296,r[n]=1023&o|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function s(e,t){for(var r=[],n=new Array(65535),i=0,a=0,s=e.length;t>i&&s>a;i++){var o=e[a++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=o;break;case 12:case 13:if(!(s>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&o)<<6|63&e[a++];break;case 14:if(!(s>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&o)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(s>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&o)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function o(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):s(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return[e.subarray(0,i),i]}function c(e){for(var t=e.length,r=new Array(e.length),n=0;t>n;++n)r[n]=e[n];return r}function f(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function l(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case l:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function h(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case l:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return o(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var g=!0;try{String.fromCharCode.apply(String,new Uint8Array([1,2]))}catch(v){g=!1,Object.defineProperty(Array.prototype,"subarray",{value:Array.prototype.slice})}var p=new Uint8Array(0),d=1024,y=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(l.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=f(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,d),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case l:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=y(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=y(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=o(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=o(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){if(this._off+e>this._length&&(e=this._length-this._off),0===e)return"";var t=this._bytes.subarray(this._off,this._off+=e),r=g?t:c(t);if(1e5>e)return String.fromCharCode.apply(String,r);for(var n=65535&e,i=e>>16,a=new Array(n?i+1:i),s=0;i>s;++s)a[s]=String.fromCharCode.apply(String,r.subarray(s<<16,s+1<<16));return n&&(a[i]=String.fromCharCode.apply(String,r.subarray(i<<16,e))),a.join("")}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=o(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return o(this.bytes,this._length)[0]}},clone:{value:function(){return new l(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(l,"toString",{value:h}),e.hprose.BytesIO=l}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){s.set(e,t),a[t]=e}function r(e){return s.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),s=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=j.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&j.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function s(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void o(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case k:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function o(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),s=("00"+t.getUTCHours()).slice(-2),o=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),s=("00"+t.getHours()).slice(-2),o=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===s&&"00"===o&&"00"===u&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),s=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==s&&(r.writeByte(S.TagPoint),r.writeAsciiString(s)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.write(t),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.writeString(t),r.writeByte(S.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;n.writeByte(S.TagList),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a]);n.writeByte(S.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;r.writeByte(S.TagMap),a>0&&r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var o=0;a>o;o++)s(e,n[o]),s(e,t[n[o]]);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){s(e,r),s(e,t)}),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,o=r(t);if(o in e._classref)i=e._classref[o],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,o,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)s(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a]);n.writeByte(S.TagClosebrace);var s=e._fieldsref.length;return e._classref[t]=s,e._fieldsref[s]=r,s}var B=e.Map,k=e.hprose.BytesIO,S=e.hprose.Tags,j=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){s(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){d(this,e,s)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,s)}},writeMap:{value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:s(e,t);break;case ee.TagDate:case ee.TagTime:o(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t), +i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),s=r.readByte();if(s===ee.TagTime){var o=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;s=r.readByte(),s===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(n,i,a,o,u,c,f)):new Date(n,i,a,o,u,c,f)}else t=s===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),s=0,o=r.readByte();return o===ee.TagPoint&&(s=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,s)):new Date(1970,0,1,n,i,a,s),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function F(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function P(e){var t=F(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r[a]=s}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r.set(a,s)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return j(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return P(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function j(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case o.TagError:r=new Error(i.readString());break;case o.TagFunctions:var s=i.readList();i.checkTag(o.TagEnd),A(e,s);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function E(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var s=0;sn;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var s in a)s in i&&(i[s]=a[s])}for(var o=0,u=r.length;u>o&&typeof r[o]!==w;++o);if(o===u)return i;var c=r.splice(o,u-o);for(i.onsuccess=c[0],u=c.length,o=1;u>o;++o){var f=c[o];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(o.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Pe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function F(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function P(e,t,r){var n=U(e,t,r);return n.writeByte(o.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,s=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===o.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===o.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===o.TagError&&(s=new Error(h.readString()),g=f.readByte());g!==o.TagEnd&&(s=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){s=p}s?i(s):e(a)},i)})}function x(e){return function(){e&&(Pe=!1,s(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Pe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(s){r.onerror&&r.onerror(e,s),i(s)}n(a)}catch(s){i(s)}},function(t){F(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(o.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,s=new c(r),f=new l(s,!1),h=s.readByte();try{for(;h!==o.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===o.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(o.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=s.readByte(),h===o.TagArgument){if(p>=u.Raw)g.writeByte(o.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=s.readByte()}}else h===o.TagError&&(p>=u.Raw?(g.writeByte(o.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=s.readByte());if([o.TagEnd,o.TagResult,o.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(o.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Pe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Pe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)F(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&F(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Fe}function K(e){Fe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function se(){return Re}function oe(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(s(j,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var s=2;i>s;s++)t.push(arguments[s])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var s=function(){N(rt,e,[r,a.handler,s,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,o=i.length;o>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&s()}},callbacks:[n]},Qe[e][r]=a,s()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(s){return h.error(s)}}},P)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function je(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function Ee(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Fe=!1,Pe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=P,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return je(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:se,set:oe},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:Ee},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var s=e.setImmediate,o=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=o.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var s in d)a.setRequestHeader(s,d[s]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var o=new Uint8Array(n.length);o.set(n),a.send(o.buffer)}return a}function f(e,t){var n=new o,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);s.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,s=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===s&&n.length>=i&&(s=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),s),i=4,s=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=s}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function s(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){s.call(this,e)}function u(e){s.call(this,e)}function c(e,t,r){function n(){return b}function s(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new o(T)),S.sendAndReceive(e,r,t)):((null===j||j.uri!==T.uri)&&(j=new u(T)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:s},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(s.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var s=new n,o=this;return s.connect(i,a,r,this.client.options),s.onclose=function(){--o.size},++this.size,s}}}),o.prototype=Object.create(s.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var s=this,o=i.timeout;o>0&&(a.timeoutIds[n]=e.setTimeout(function(){s.clean(a,n),0===a.count&&s.recycle(a),r.reject(new TimeoutError("timeout"))},o)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u,0),c.writeInt32BE(n,4),c.write(t),a.send(c.buffer).then(function(e){s.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,s=n.timeout;s>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},s)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var o=t.length,u=new g(4+o);u.writeInt32BE(o,0),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizey?++y:y=0}function f(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?_.send(n):n.buffer.slice?_.send(n.buffer.slice(0,n.length)):_.send(n.buffer)}function l(e){b.resolve(e)}function h(e){var r=new o(e.data),n=r.readInt32BE(),i=m[n];if(delete m[n],i!==t&&(--w,i.resolve(r.read(r.length-4))),100>w&&T.length>0){++w;var a=T.shift();b.then(function(){f(a[0],a[1])})}0===w&&(B.keepAlive||d())}function g(e){m.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete m[r]}),w=0,_=null}function v(){b=new u,_=new WebSocket(B.uri),_.binaryType="arraybuffer",_.onopen=l,_.onmessage=h,_.onerror=r,_.onclose=g}function p(e,t){(null===_||_.readyState===WebSocket.CLOSING||_.readyState===WebSocket.CLOSED)&&v();var r=c(),n=new u;return m[r]=n,B.timeout>0&&(n=n.timeout(B.timeout).catchError(function(e){ +throw delete m[r],--w,e},function(e){return e instanceof TimeoutError})),100>w?(++w,b.then(function(){f(r,e)})):T.push([r,e]),t.oneway&&n.resolve(),n}function d(){null!==_&&(_.onopen=r,_.onmessage=r,_.onclose=r,_.close())}if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var y=0,w=0,m=[],T=[],b=null,_=null,B=this;Object.defineProperties(this,{sendAndReceive:{value:p},close:{value:d}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.BytesIO,u=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,s=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var s=JSON.parse(a),o=new n,u=new i(o,!0),c=0,f=s.length;f>c;++c){var l=s[c];l.error?(o.writeByte(r.TagError),u.writeString(l.error.message)):(o.writeByte(r.TagResult),u.serialize(l.result))}return o.writeByte(r.TagEnd),o.bytes},t.prototype.outputFilter=function(e,t){var i=[],o=new n(e),u=new a(o,!1,!1),c=o.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=o.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=o.readByte()),c===r.TagTrue&&(c=o.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 467d164..f665b83 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/package.json b/package.json index bfba673..260d7d7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.7", + "version": "2.0.8", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/Client.js b/src/Client.js index cdd53cb..76b2b23 100644 --- a/src/Client.js +++ b/src/Client.js @@ -1063,7 +1063,6 @@ }); Object.defineProperties(this, { '#': { value: autoId }, - onError: { get: getOnError, set: setOnError }, onerror: { get: getOnError, set: setOnError }, uri: { get: getUri }, id: { get: getId }, diff --git a/src/CopyRight.js b/src/CopyRight.js index 1d1e077..0341c6e 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.7 +// Hprose for HTML5 v2.0.8 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/HttpClient.js b/src/HttpClient.js index bba8114..ccb860a 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,7 +12,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Feb 25, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -121,7 +121,6 @@ } } Object.defineProperties(this, { - onProgress: { get: getOnRequestProgress, set: setOnRequestProgress }, onprogress: { get: getOnRequestProgress, set: setOnRequestProgress }, onRequestProgress: { get: getOnRequestProgress, set: setOnRequestProgress }, onResponseProgress: { get: getOnResponseProgress, set: setOnResponseProgress }, From 3c37cd55f4d7ba704c1244097f45a1b18770a1e7 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 26 Feb 2016 11:37:23 +0800 Subject: [PATCH 14/86] Deleted the extra comma at the end --- src/Future.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Future.js b/src/Future.js index f3b8be7..2b417f5 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Feb 25, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -36,7 +36,7 @@ Object.defineProperties(this, { _subscribers: { value: [] }, resolve: { value: this.resolve.bind(this) }, - reject: { value: this.reject.bind(this) }, + reject: { value: this.reject.bind(this) } }); var self = this; if (typeof computation === 'function') { @@ -628,7 +628,7 @@ return Object.create(null, { promise: { value: self }, resolve: { value: self.resolve }, - reject: { value: self.reject }, + reject: { value: self.reject } }); }; From 555019bdfbdb445cf071ca2a7fa67f4c4b94b4c9 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 28 Feb 2016 15:52:34 +0800 Subject: [PATCH 15/86] Fixed a few bugs. --- src/HttpClient.js | 4 ++-- src/TcpClient.js | 4 ++-- src/WebSocketClient.js | 12 ++++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/HttpClient.js b/src/HttpClient.js index ccb860a..c83d82a 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,7 +12,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Feb 25, 2016 * + * LastModified: Feb 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -147,7 +147,7 @@ uri.forEach(function(uri) { checkuri(uri); }); } else { - return new Error('You should set server uri first!'); + throw new Error('You should set server uri first!'); } return new HttpClient(uri, functions, settings); } diff --git a/src/TcpClient.js b/src/TcpClient.js index a39ac98..8966f7e 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,7 +12,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Feb 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -588,7 +588,7 @@ uri.forEach(function(uri) { checkuri(uri); }); } else { - return new Error('You should set server uri first!'); + throw new Error('You should set server uri first!'); } return new TcpClient(uri, functions, settings); } diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index 36debfc..4f01bcc 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Feb 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -23,9 +23,13 @@ var Client = global.hprose.Client; var BytesIO = global.hprose.BytesIO; var Future = global.hprose.Future; + var WebSocket = global.WebSocket || global.MozWebSocket; function noop(){} function WebSocketClient(uri, functions, settings) { + if (typeof(WebSocket) === "undefined") { + throw new Error('WebSocket is not supported by this browser.'); + } if (this.constructor !== WebSocketClient) return new WebSocketClient(uri, functions, settings); Client.call(this, uri, functions, settings); @@ -109,8 +113,8 @@ var id = getNextId(); var future = new Future(); _futures[id] = future; - if (self.timeout > 0) { - future = future.timeout(self.timeout).catchError(function(e) { + if (env.timeout > 0) { + future = future.timeout(env.timeout).catchError(function(e) { delete _futures[id]; --_count; throw e; @@ -162,7 +166,7 @@ uri.forEach(function(uri) { checkuri(uri); }); } else { - return new Error('You should set server uri first!'); + throw new Error('You should set server uri first!'); } return new WebSocketClient(uri, functions, settings); } From bca632ff5ba0f6a1a18c496137f4c027b1331014 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 28 Feb 2016 18:32:27 +0800 Subject: [PATCH 16/86] Fixed TcpClient --- dist/hprose-html5.js | 6 +++--- dist/hprose-html5.min.js | 2 +- src/TcpClient.js | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index a8ef560..67b56a7 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,s=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(s(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var o=arguments[0],u=0,c=o.length;c>u;u++)n.set(o[u][0],o[u][1]);return n}),!r){var o=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(s(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:o(),"function":o(),unknown:o(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var s=e.document,o=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=s.createTextNode(""),r=new o(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=s.createElement("iframe");e.style.display="none",s.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=s.documentElement;return function(){var t=a(arguments),r=s.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?s&&"onreadystatechange"in s.createElement("script")?l.setImmediate=u.readyStateChange():s&&o?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():s&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&M(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||U&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return N(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function o(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return o(t)}catch(r){return s(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return P(e,function(){++t}),t}function l(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(function(e){a[t]=e,0===--n&&s.resolve(a)},s.reject)}),s})}function h(){return l(arguments)}function g(e){return e=i(e)?e:o(e),e.then(function(e){var t=new r;return P(e,function(e){var r=i(e)?e:o(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(s.resolve,function(e){a[t]=e,0===--n&&s.reject(a)})}),s})}function p(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&s.resolve(a)})}),s})}function d(e){var r=x(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function y(e,t){var r=x(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function k(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function j(e,t,r){M(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function E(e,t,r){e?j(e,t,r):t.reject(r)}function O(e,t,r,n,a){function s(i){O(e,t,r,n,i)}function o(e){E(t,n,e)}if(i(a))return a===r?void o(new TypeError("Self resolution")):void a.then(s,o);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void o(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,s(e))},function(e){f&&(f=!1,o(e))})}catch(c){f&&(f=!1,o(c))}return}}e?j(e,n,a):n.resolve(a)}function A(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==C}}})}var C=0,I=1,R=2,U="Promise"in e,M=e.setImmediate,N=e.setTimeout,F=e.clearTimeout,P=Function.prototype.call.bind(Array.prototype.forEach),x=Function.prototype.call.bind(Array.prototype.slice);Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:u},value:{value:o},all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:d},run:{value:y},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:k},reduceRight:{value:S}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:C,writable:!0},resolve:{value:function(e){if(this._state===C){this._state=I,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();O(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===C){this._state=R,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?j(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===I?e?O(e,t,this,n,this._value):n.resolve(this._value):this._state===R?t?j(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case C:return{state:"pending"};case I:return{state:"fulfilled",value:this._value};case R:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:o(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:o(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=N(function(){n.reject(t||new TimeoutError("timeout"))},e);return this.whenComplete(function(){F(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){N(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=x(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=x(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=x(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?k(this,e,t):k(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}}}),e.hprose.Future=r,e.hprose.Completer=A,e.hprose.resolved=o,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},U||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var s=r.charCodeAt(i+1);if(56320>a&&s>=56320&&57343>=s){var o=((1023&a)<<10|1023&s)+65536;e[t++]=240|o>>18,e[t++]=128|o>>12&63,e[t++]=128|o>>6&63,e[t++]=128|63&o,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=s;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&s)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&s)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));r[n++]=o>>10&1023|55296,r[n]=1023&o|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function s(e,t){for(var r=[],n=new Array(65535),i=0,a=0,s=e.length;t>i&&s>a;i++){var o=e[a++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=o;break;case 12:case 13:if(!(s>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&o)<<6|63&e[a++];break;case 14:if(!(s>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&o)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(s>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&o)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function o(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):s(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return[e.subarray(0,i),i]}function c(e){for(var t=e.length,r=new Array(e.length),n=0;t>n;++n)r[n]=e[n];return r}function f(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function l(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case l:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function h(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case l:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return o(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var g=!0;try{String.fromCharCode.apply(String,new Uint8Array([1,2]))}catch(v){g=!1,Object.defineProperty(Array.prototype,"subarray",{value:Array.prototype.slice})}var p=new Uint8Array(0),d=1024,y=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(l.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=f(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,d),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case l:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=y(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=y(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=o(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=o(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){if(this._off+e>this._length&&(e=this._length-this._off),0===e)return"";var t=this._bytes.subarray(this._off,this._off+=e),r=g?t:c(t);if(1e5>e)return String.fromCharCode.apply(String,r);for(var n=65535&e,i=e>>16,a=new Array(n?i+1:i),s=0;i>s;++s)a[s]=String.fromCharCode.apply(String,r.subarray(s<<16,s+1<<16));return n&&(a[i]=String.fromCharCode.apply(String,r.subarray(i<<16,e))),a.join("")}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=o(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return o(this.bytes,this._length)[0]}},clone:{value:function(){return new l(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(l,"toString",{value:h}),e.hprose.BytesIO=l}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){s.set(e,t),a[t]=e}function r(e){return s.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),s=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=j.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&j.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function s(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void o(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case k:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function o(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),s=("00"+t.getUTCHours()).slice(-2),o=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),s=("00"+t.getHours()).slice(-2),o=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===s&&"00"===o&&"00"===u&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),s=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==s&&(r.writeByte(S.TagPoint),r.writeAsciiString(s)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.write(t),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.writeString(t),r.writeByte(S.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;n.writeByte(S.TagList),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a]);n.writeByte(S.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;r.writeByte(S.TagMap),a>0&&r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var o=0;a>o;o++)s(e,n[o]),s(e,t[n[o]]);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){s(e,r),s(e,t)}),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,o=r(t);if(o in e._classref)i=e._classref[o],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,o,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)s(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a]);n.writeByte(S.TagClosebrace);var s=e._fieldsref.length;return e._classref[t]=s,e._fieldsref[s]=r,s}var B=e.Map,k=e.hprose.BytesIO,S=e.hprose.Tags,j=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){s(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){d(this,e,s)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,s)}},writeMap:{value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:s(e,t);break;case ee.TagDate:case ee.TagTime:o(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t), -i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),s=r.readByte();if(s===ee.TagTime){var o=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;s=r.readByte(),s===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(n,i,a,o,u,c,f)):new Date(n,i,a,o,u,c,f)}else t=s===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),s=0,o=r.readByte();return o===ee.TagPoint&&(s=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,s)):new Date(1970,0,1,n,i,a,s),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function F(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function P(e){var t=F(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r[a]=s}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r.set(a,s)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return j(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return P(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function j(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case o.TagError:r=new Error(i.readString());break;case o.TagFunctions:var s=i.readList();i.checkTag(o.TagEnd),A(e,s);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function E(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var s=0;sn;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var s in a)s in i&&(i[s]=a[s])}for(var o=0,u=r.length;u>o&&typeof r[o]!==w;++o);if(o===u)return i;var c=r.splice(o,u-o);for(i.onsuccess=c[0],u=c.length,o=1;u>o;++o){var f=c[o];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(o.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Pe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function F(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function P(e,t,r){var n=U(e,t,r);return n.writeByte(o.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,s=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===o.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===o.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===o.TagError&&(s=new Error(h.readString()),g=f.readByte());g!==o.TagEnd&&(s=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){s=p}s?i(s):e(a)},i)})}function x(e){return function(){e&&(Pe=!1,s(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Pe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(s){r.onerror&&r.onerror(e,s),i(s)}n(a)}catch(s){i(s)}},function(t){F(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(o.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,s=new c(r),f=new l(s,!1),h=s.readByte();try{for(;h!==o.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===o.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(o.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=s.readByte(),h===o.TagArgument){if(p>=u.Raw)g.writeByte(o.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=s.readByte()}}else h===o.TagError&&(p>=u.Raw?(g.writeByte(o.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=s.readByte());if([o.TagEnd,o.TagResult,o.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(o.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Pe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Pe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)F(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&F(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Fe}function K(e){Fe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function se(){return Re}function oe(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(s(j,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var s=2;i>s;s++)t.push(arguments[s])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var s=function(){N(rt,e,[r,a.handler,s,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,o=i.length;o>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&s()}},callbacks:[n]},Qe[e][r]=a,s()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(s){return h.error(s)}}},P)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function je(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function Ee(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Fe=!1,Pe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=P,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return je(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:se,set:oe},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:Ee},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var s=e.setImmediate,o=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=o.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var s in d)a.setRequestHeader(s,d[s]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var o=new Uint8Array(n.length);o.set(n),a.send(o.buffer)}return a}function f(e,t){var n=new o,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);s.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,s=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===s&&n.length>=i&&(s=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),s),i=4,s=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=s}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function s(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){s.call(this,e)}function u(e){s.call(this,e)}function c(e,t,r){function n(){return b}function s(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new o(T)),S.sendAndReceive(e,r,t)):((null===j||j.uri!==T.uri)&&(j=new u(T)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:s},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(s.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var s=new n,o=this;return s.connect(i,a,r,this.client.options),s.onclose=function(){--o.size},++this.size,s}}}),o.prototype=Object.create(s.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var s=this,o=i.timeout;o>0&&(a.timeoutIds[n]=e.setTimeout(function(){s.clean(a,n),0===a.count&&s.recycle(a),r.reject(new TimeoutError("timeout"))},o)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u,0),c.writeInt32BE(n,4),c.write(t),a.send(c.buffer).then(function(e){s.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,s=n.timeout;s>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},s)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var o=t.length,u=new g(4+o);u.writeInt32BE(o,0),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizey?++y:y=0}function f(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?_.send(n):n.buffer.slice?_.send(n.buffer.slice(0,n.length)):_.send(n.buffer)}function l(e){b.resolve(e)}function h(e){var r=new o(e.data),n=r.readInt32BE(),i=m[n];if(delete m[n],i!==t&&(--w,i.resolve(r.read(r.length-4))),100>w&&T.length>0){++w;var a=T.shift();b.then(function(){f(a[0],a[1])})}0===w&&(B.keepAlive||d())}function g(e){m.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete m[r]}),w=0,_=null}function v(){b=new u,_=new WebSocket(B.uri),_.binaryType="arraybuffer",_.onopen=l,_.onmessage=h,_.onerror=r,_.onclose=g}function p(e,t){(null===_||_.readyState===WebSocket.CLOSING||_.readyState===WebSocket.CLOSED)&&v();var r=c(),n=new u;return m[r]=n,B.timeout>0&&(n=n.timeout(B.timeout).catchError(function(e){ -throw delete m[r],--w,e},function(e){return e instanceof TimeoutError})),100>w?(++w,b.then(function(){f(r,e)})):T.push([r,e]),t.oneway&&n.resolve(),n}function d(){null!==_&&(_.onopen=r,_.onmessage=r,_.onclose=r,_.close())}if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var y=0,w=0,m=[],T=[],b=null,_=null,B=this;Object.defineProperties(this,{sendAndReceive:{value:p},close:{value:d}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))return new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.BytesIO,u=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,s=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var s=JSON.parse(a),o=new n,u=new i(o,!0),c=0,f=s.length;f>c;++c){var l=s[c];l.error?(o.writeByte(r.TagError),u.writeString(l.error.message)):(o.writeByte(r.TagResult),u.serialize(l.result))}return o.writeByte(r.TagEnd),o.bytes},t.prototype.outputFilter=function(e,t){var i=[],o=new n(e),u=new a(o,!1,!1),c=o.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=o.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=o.readByte()),c===r.TagTrue&&(c=o.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,s=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(s(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var o=arguments[0],u=0,c=o.length;c>u;u++)n.set(o[u][0],o[u][1]);return n}),!r){var o=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(s(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:o(),"function":o(),unknown:o(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var s=e.document,o=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=s.createTextNode(""),r=new o(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=s.createElement("iframe");e.style.display="none",s.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=s.documentElement;return function(){var t=a(arguments),r=s.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?s&&"onreadystatechange"in s.createElement("script")?l.setImmediate=u.readyStateChange():s&&o?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():s&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&M(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||U&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return N(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function o(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return o(t)}catch(r){return s(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return P(e,function(){++t}),t}function l(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(function(e){a[t]=e,0===--n&&s.resolve(a)},s.reject)}),s})}function h(){return l(arguments)}function g(e){return e=i(e)?e:o(e),e.then(function(e){var t=new r;return P(e,function(e){var r=i(e)?e:o(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(s.resolve,function(e){a[t]=e,0===--n&&s.reject(a)})}),s})}function p(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&s.resolve(a)})}),s})}function d(e){var r=x(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function y(e,t){var r=x(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function k(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){M(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function j(e,t,r){e?E(e,t,r):t.reject(r)}function O(e,t,r,n,a){function s(i){O(e,t,r,n,i)}function o(e){j(t,n,e)}if(i(a))return a===r?void o(new TypeError("Self resolution")):void a.then(s,o);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void o(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,s(e))},function(e){f&&(f=!1,o(e))})}catch(c){f&&(f=!1,o(c))}return}}e?E(e,n,a):n.resolve(a)}function A(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==C}}})}var C=0,I=1,R=2,U="Promise"in e,M=e.setImmediate,N=e.setTimeout,F=e.clearTimeout,P=Function.prototype.call.bind(Array.prototype.forEach),x=Function.prototype.call.bind(Array.prototype.slice);Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:u},value:{value:o},all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:d},run:{value:y},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:k},reduceRight:{value:S}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:C,writable:!0},resolve:{value:function(e){if(this._state===C){this._state=I,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();O(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===C){this._state=R,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?E(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===I?e?O(e,t,this,n,this._value):n.resolve(this._value):this._state===R?t?E(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case C:return{state:"pending"};case I:return{state:"fulfilled",value:this._value};case R:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:o(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:o(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=N(function(){n.reject(t||new TimeoutError("timeout"))},e);return this.whenComplete(function(){F(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){N(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=x(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=x(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=x(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?k(this,e,t):k(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}}}),e.hprose.Future=r,e.hprose.Completer=A,e.hprose.resolved=o,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},U||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var s=r.charCodeAt(i+1);if(56320>a&&s>=56320&&57343>=s){var o=((1023&a)<<10|1023&s)+65536;e[t++]=240|o>>18,e[t++]=128|o>>12&63,e[t++]=128|o>>6&63,e[t++]=128|63&o,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=s;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&s)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&s)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));r[n++]=o>>10&1023|55296,r[n]=1023&o|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function s(e,t){for(var r=[],n=new Array(65535),i=0,a=0,s=e.length;t>i&&s>a;i++){var o=e[a++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=o;break;case 12:case 13:if(!(s>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&o)<<6|63&e[a++];break;case 14:if(!(s>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&o)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(s>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&o)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function o(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):s(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return[e.subarray(0,i),i]}function c(e){for(var t=e.length,r=new Array(e.length),n=0;t>n;++n)r[n]=e[n];return r}function f(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function l(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case l:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function h(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case l:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return o(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var g=!0;try{String.fromCharCode.apply(String,new Uint8Array([1,2]))}catch(v){g=!1,Object.defineProperty(Array.prototype,"subarray",{value:Array.prototype.slice})}var p=new Uint8Array(0),d=1024,y=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(l.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=f(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,d),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case l:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=y(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=y(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=o(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=o(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){if(this._off+e>this._length&&(e=this._length-this._off),0===e)return"";var t=this._bytes.subarray(this._off,this._off+=e),r=g?t:c(t);if(1e5>e)return String.fromCharCode.apply(String,r);for(var n=65535&e,i=e>>16,a=new Array(n?i+1:i),s=0;i>s;++s)a[s]=String.fromCharCode.apply(String,r.subarray(s<<16,s+1<<16));return n&&(a[i]=String.fromCharCode.apply(String,r.subarray(i<<16,e))),a.join("")}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=o(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return o(this.bytes,this._length)[0]}},clone:{value:function(){return new l(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(l,"toString",{value:h}),e.hprose.BytesIO=l}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){s.set(e,t),a[t]=e}function r(e){return s.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),s=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=E.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&E.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?j:i(e)}})}function s(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void o(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case k:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function o(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),s=("00"+t.getUTCHours()).slice(-2),o=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),s=("00"+t.getHours()).slice(-2),o=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===s&&"00"===o&&"00"===u&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),s=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==s&&(r.writeByte(S.TagPoint),r.writeAsciiString(s)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.write(t),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.writeString(t),r.writeByte(S.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;n.writeByte(S.TagList),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a]);n.writeByte(S.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;r.writeByte(S.TagMap),a>0&&r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var o=0;a>o;o++)s(e,n[o]),s(e,t[n[o]]);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){s(e,r),s(e,t)}),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,o=r(t);if(o in e._classref)i=e._classref[o],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,o,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)s(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a]);n.writeByte(S.TagClosebrace);var s=e._fieldsref.length;return e._classref[t]=s,e._fieldsref[s]=r,s}var B=e.Map,k=e.hprose.BytesIO,S=e.hprose.Tags,E=e.hprose.ClassManager,j=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){s(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){d(this,e,s)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,s)}},writeMap:{value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:s(e,t);break;case ee.TagDate:case ee.TagTime:o(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t), +i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return j(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return j(e);default:r(t)}}function j(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),s=r.readByte();if(s===ee.TagTime){var o=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;s=r.readByte(),s===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(n,i,a,o,u,c,f)):new Date(n,i,a,o,u,c,f)}else t=s===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),s=0,o=r.readByte();return o===ee.TagPoint&&(s=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,s)):new Date(1970,0,1,n,i,a,s),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function F(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function P(e){var t=F(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r[a]=s}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r.set(a,s)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return E(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return P(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function E(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case o.TagError:r=new Error(i.readString());break;case o.TagFunctions:var s=i.readList();i.checkTag(o.TagEnd),A(e,s);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function j(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var s=0;sn;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var s in a)s in i&&(i[s]=a[s])}for(var o=0,u=r.length;u>o&&typeof r[o]!==w;++o);if(o===u)return i;var c=r.splice(o,u-o);for(i.onsuccess=c[0],u=c.length,o=1;u>o;++o){var f=c[o];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(o.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Pe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function F(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function P(e,t,r){var n=U(e,t,r);return n.writeByte(o.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,s=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===o.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===o.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===o.TagError&&(s=new Error(h.readString()),g=f.readByte());g!==o.TagEnd&&(s=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){s=p}s?i(s):e(a)},i)})}function x(e){return function(){e&&(Pe=!1,s(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Pe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(s){r.onerror&&r.onerror(e,s),i(s)}n(a)}catch(s){i(s)}},function(t){F(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(o.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,s=new c(r),f=new l(s,!1),h=s.readByte();try{for(;h!==o.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===o.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(o.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=s.readByte(),h===o.TagArgument){if(p>=u.Raw)g.writeByte(o.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=s.readByte()}}else h===o.TagError&&(p>=u.Raw?(g.writeByte(o.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=s.readByte());if([o.TagEnd,o.TagResult,o.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(o.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Pe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Pe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)F(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&F(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Fe}function K(e){Fe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function se(){return Re}function oe(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(s(E,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var s=2;i>s;s++)t.push(arguments[s])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var s=function(){N(rt,e,[r,a.handler,s,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,o=i.length;o>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&s()}},callbacks:[n]},Qe[e][r]=a,s()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(s){return h.error(s)}}},P)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ee(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function je(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Fe=!1,Pe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=P,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:se,set:oe},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:je},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var s=e.setImmediate,o=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=o.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var s in d)a.setRequestHeader(s,d[s]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var o=new Uint8Array(n.length);o.set(n),a.send(o.buffer)}return a}function f(e,t){var n=new o,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);s.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,s=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===s&&n.length>=i&&(s=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),s),i=4,s=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=s}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function s(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){s.call(this,e)}function u(e){s.call(this,e)}function c(e,t,r){function n(){return b}function s(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new o(T)),S.sendAndReceive(e,r,t)):((null===E||E.uri!==T.uri)&&(E=new u(T)),E.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,E=null;Object.defineProperties(this,{noDelay:{get:n,set:s},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(s.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var s=new n,o=this;return s.connect(i,a,r,this.client.options),s.onclose=function(){--o.size},++this.size,s}}}),o.prototype=Object.create(s.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var s=this,o=i.timeout;o>0&&(a.timeoutIds[n]=e.setTimeout(function(){s.clean(a,n),0===a.count&&s.recycle(a),r.reject(new TimeoutError("timeout"))},o)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(e){s.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,s=n.timeout;s>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},s)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var o=t.length,u=new g(4+o);u.writeInt32BE(o),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizew?++w:w=0}function l(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?B.send(n):n.buffer.slice?B.send(n.buffer.slice(0,n.length)):B.send(n.buffer)}function h(e){_.resolve(e)}function g(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--m,i.resolve(r.read(r.length-4))),100>m&&b.length>0){++m;var a=b.shift();_.then(function(){l(a[0],a[1])})}0===m&&(k.keepAlive||y())}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),m=0,B=null}function p(){_=new u,B=new c(k.uri),B.binaryType="arraybuffer",B.onopen=h,B.onmessage=g,B.onerror=r,B.onclose=v}function d(e,t){(null===B||B.readyState===c.CLOSING||B.readyState===c.CLOSED)&&p();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r], +--m,e},function(e){return e instanceof TimeoutError})),100>m?(++m,_.then(function(){l(r,e)})):b.push([r,e]),t.oneway&&n.resolve(),n}function y(){null!==B&&(B.onopen=r,B.onmessage=r,B.onclose=r,B.close())}if("undefined"==typeof c)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var w=0,m=0,T=[],b=[],_=null,B=null,k=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:y}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.BytesIO,u=e.hprose.Future,c=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,s=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var s=JSON.parse(a),o=new n,u=new i(o,!0),c=0,f=s.length;f>c;++c){var l=s[c];l.error?(o.writeByte(r.TagError),u.writeString(l.error.message)):(o.writeByte(r.TagResult),u.serialize(l.result))}return o.writeByte(r.TagEnd),o.bytes},t.prototype.outputFilter=function(e,t){var i=[],o=new n(e),u=new a(o,!1,!1),c=o.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=o.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=o.readByte()),c===r.TagTrue&&(c=o.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index f665b83..2a7939b 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQB0BAEAAAAAAAAzHUn/qWH7EwabADPIOSfRKQfDP5PS/WIum7zHAeJQvA4d9n4POLH6lJgsLP5QlqVDZXChzavjIbyDu+IMZRgJjRkeO7Zf+8FbLd/v4y5knW31OfmeQj7s0YoUOMF6krkyS4BiP7mSKlmmHj541GqWqc+Kb6Vt+wR1/8GSKawin+FUylpP8v7CNFC+mDCtquMLzouKhIidQVpK6Zl2rPqAhxNIlDAnVJXEaqbB9FCpAs+/bSDX0UOdzRcxhPPSaOJyrKHHPV6Uygnk791jVM5MxWp4sH2lMJST//ZSj9rEk8aHn7juQgL+wnPw/cjCR+VEh9cw+2nbg0TsM1VT6MrNCAGbkcIsSdSB2ZKYpKkl+g03/sTI8eWQ4Vs0XYG3YN2cp0C/HSbCzhM0v103pzaUSTlkgZPOyCqlEdQU1y4Dss51pRIsXyPs8yMavhLjAr33Nu1Au/hzlI5WY+7ThZYrr3tUPamcaajK/7sbZ/JlxtBqeBgqaWYVOS0p1LUcelBYrqoaAy4r83NUCa4CyGrZ0J5Aje2+F4neoANrVS3r1vcz48/eg339y82Ux+FMue0++hY2f0dzHXhKKQLJE5bZeejlyrfaU39am0ZI2bwBGxgtueTSXQjKHKKxNgPwbQiOAThgNa/TYjYROPOBmB3yig7rhu5x/a2l4PBnUuDhXvXcrNpimt+lhAgKw+2Y2BllyX2ZRQ8t78f7OCjk8/HV+4LqgC7b+gcFidtbid1i7TB3fMKeWmSVGBbueTOJN1iftqP9fmqt+1FaaHqHDNtQwIoWIIDg/7vh1a/29SHnu57RVKGeR4z5NXx47pYEMqK2wBg6/69UoVNHxEJUNxlY7sHH6eCtj11fjsxGMpOx4AVsbFYlU8tFdtUOPBiGXtMpw1pIkB6RxXnJseNXLOJra5BUC0fTTK+pXRjUgr2+Ih7W2TVzDetFiM7MYPbfBiMyGPgcVv/s+P6z4Hu26vx5y8qOFsQhRjoyNtX+oQ3qyWKhsDdl1EZsrcYD/MRzfkovdFL/DWqf/ILb6KgwP7bhCNfNb7hFHs4iX1Xg7iy7CwbnR/5YzjjwHHoNABL95DlemA9vKrSFZfFDCMSd83Z8Ux8LFiAy35YV5w2bt2wwM9R5hEnbc2M1KyqTNEVKy/29U1KiVlt0pSYVlApruES0biQFm+wSQbcYS/Vz+DwljM3ZwZvTVSVPdTUlOSeidMfy2JExr5l5b2Hg8zTrBoPJBLJdDpiRvHD0Z45AFHNVsovOUG6pA+a9bOHJ4Ki7rtHTtNs0SlXV4q8gl82IehjEOnzuiaimkaWfLWH+SQ4dq53ACd7gUlLlkykH6Ah0oBzNJ1Ai50IBa4tohoCfJTPicOOGrj2oe+/Ichnp/wdtk+iF7R1nOPrjgCCYVo/8U4obf8KQeVwj3/ARYfXLYjEXR9CoZaE1/R/vDNldweP56RkoG8u6lGChR/4erSTqLZhGUCVqWbXcicAx/nCIhY3K+4upUSD+XleDquRY6ygVJYQwN3iJlpSjibYVzLvMrL36UCZZ/WoDopUEUc85OIivxPMq28YHL9uq88kMkzS1zdeFHilpDfFU18YpNSYB1xlLugRXEH0VunP7PfsFw//AtL3qQmu4C7mVhhd60052IeKZoI/hVAStUwsCvJ6vdHnV4Sfyk38IpsUTPXtPKkksdZ5iFvM922R7i3YwkBDNaWGzlbLtgZ4KCsSoeNBRAHzeGYlbdQSbrdeecedZ2qnw2MDJlTlelSnhmIMXn4VvRHeB1wCZ8xmj8+lz/HVz7TNlgruLyR2a29mgAIxV0fGxx6dStm6ypvej/q0uKdjsP/7cjTQelxn4BpRM+SKqcm0ofsBtVMUmoadq0/WeGIFyvTBfocgwGfIeRpK/4deV5r+oZjl3cgXAx61On3fLijV8jT+KP06J95jEaYmz32+afzyvR91lbQFvA3tvMXsqb0RzfSmP5ZWGlcNIOf2OU+ZMkCLFpUd/7ZP15LrxWzi/WdstBbA0eZgzs7AG9/Op4lprH1Yl0dXZz+jQ1NwVRoIhjE152G7Afr6LDk2vQ4kB7dl+EdntqUECzQs5fdO+tKCo7hce+9SIh9Y9P/RaVt6ktyKkiDlrFpFTeKL93LOfbzKzdJlB/BjkhrGjpf7ZlDVBFJBMPIJflH35Yd8EuqyPHJNBEwPD9iHBOAIjn+mtUBeTmwHFcIUzuOjye7WPFlymzKEmXryL/j7YKh3nSK/RK+aSNnJS1tnGCm3bJ/hcmLIgoLX9/XkQR4pi1o/YFnzD2hz0fPcuLt5e0Y4F02BeGeKEwZRESvS+XjoDz4uk+eAvXmSwaroqDeIIH69zo2UnXNFOtusRs4DdCoH9HxEi/P9hsYEm7tkI4sPLJYxOHfT0q4+f7xh9kE4Wm0ipJeTuRBU96t8L4kDEv1xPPBZYR87+ucD++5aNlG+S3bD7gi/rcrPKW5gfuGUZIGGIRjsxcVOV1RHHgghkG9JqVu01gjbqjjt3IMAH+wCtqacyFxjkRJX3IgSVgYYMWotyKDa1dUuGbRiQErye8ijFaUx/osf7nFFnIUF8WlkE0vOQ/51fqJcSFp/3c708d6GYALkW/+iTKY8mbn0cnMffEzWmHZxRmu78wlkVyHGnSBnOcRMc04EOVzaJU4KT83cRYhYkqe6+TFLmPfTRUzHiUS5irT5+JE4rSp0KR95RrOX3H1B3l4+a8G+QtFLUAOU9/BX8weL7NEMAB1PDbEiFnUsFoFtwYWa9aILsTuaIcW+mHP7A3zWuDc7y9rRB0BUsbo6teDxPFL15AqLryvp7Oukxz8vKOT6ZcOiIu4OM5mbY7fl+ofIFfDbbxPU71z3jlywkVfwpd+LYxiY5L3GMZ6lZsFiPLLzctIMNLgUopFtoQHfjJY91Cfb7EEHEvWX28f8SWCb7yficyY4jfTGQwD4kgujfXK2yAiEytrlCQt4/4DwRVKtVdBl5Z+A6/A87Lg3g0P9hQIypo/Hu/HxlzjoIFteiMTjLdaHfXT20GGTVX43rlzJCDxXtGJLgqYIeE/1lnVMGd1FNVKWQmS18bcHzYK941KN+YrhU/bKo782xr4RoioF6KKQTkGJF8UjIzSnXNnNh5WIn5mpHdORuubg4qkFId86YvidtnyLWNLY2pqio2lWsrARnuwQ9iiJgljfFYNvXfjbAqdpTqurvG1v/M8qUL6X16CUq8CLm0Haj4yap10wiz1kcGiX8d+E4RP47jgkzR8h8btM69AzV3QAwoVB8e5Pmk4tniVnKLLkmOYMXiJ/HncnWr0CQgEiEx8zM6xmAC1Ouu0Rdc8EHkbk7FI4O3UdcP9soySGjPjDa8xxEgC9y4mLmZ2c6sw5cpsMjIyzGURG3OoGIDWf7M81QgYTZTAkstjvNpqXEt7eTixrO0kEOPt8ns+dqbW8Yf8brWdI6p25mEyr7+aqpywQGxQIsi5ZDJTgbjUbzA/cTzys7H116knDS9F/gjqHJ22OvCOFuncYyjbtSoRjw53ZC02IqK30xXZ2AKrAgi2OO4V/aedvDy/KP+MRqn8YfC4txJO0O48TlHGATVLZ4G4xBflprMcfuAoWmLULq7P9BGgV9lSii3pQisk36H4QZU0U49SRhoFp45NJp4Epl63Hba3f+JXAZWRF0NKM/RiqwSKX1IIcVnrbuWq+XitGDgi1cxUa+YXkIe5aD+SemAocuW3KmEZcTMGQabzXlaoh4GrFjMt9aXZ450JZJOV7YcSWZMRzduFdWtCzXqOmy1P9NXcvSVTx7+vZ0eTjvAPesr1dlQrlMr4DT538P0RLciN4aOhXuzJeb/+h/W44+LTx+3nyiBvbNOVQhBPby/6MzIU2yMIe7ANvYvCtQOZalV6x12ab3aaSAIjyWVPgNKYYd0MNtsYf4/05UxBzPgy3tNyiwfBf7CTW3/CwldGzrbH3DpWWLVIJmqqXWr7/QJvaA4ECxxz/D4zdDcQJWqWQpJmAgSg0jHzSqDCevBJ+oOG91FgZfexVTb/VN6rqmYRANX3Bz223EHoFy5HO6+5X8iIAxIwQ32mnhdvESfsoPSJYiR9lxxHJ3ybF7k296CxWMlQCdt8P3K94GVacQw9/lSryR/KSw08CN95D36vWn2U/nxJ864IrOnTlfhS2z/u/lYgPa1en4mIk8QF4a+IGXLJNabOMbnwMtwMl7cDWcL0HPCAPqQhvu7wK4N5zDnTQ6t6ebJEeyY992CpwN/ULpMXAtMHL4jKcYxwoFTDxlqMPA/6Lqkjf5kblockH/4v1uyTGXoAT+3HqvRbeISMScPCp4K0L4PEUMceLQQzRHj1DamR33l86GXhry7/Qi/Yip38ngEYVArawtrxBAgolomeqV9c1a2NOsYorJHNFysWJhk0Y63OvazPgcS27Vzxr16ndQSuC+fNxrmHgJVCWVQDNXL0tIn0gbNMuF2c4yNXs+9qi3AZNoqpdnqb+EMUE355t32LnxHN/K+aQqw3aXdk3PvxNPKWeButAtmQ1fr75mvXrVEZgm3SprTmTz0XrmsvHEFSXUbzCx4W6RihOwuAnyi6WfP4ksW7Q4axn+Xa/7h6Kh94zqF+S5H0GY9b0ri0tGoUlEuw2Tk0vE6mPS2gruTB4Z8TfZ3Ioj9Ggf1Qn8MrhWgCcgeZAGMxHLV1hy1D7/Ra5c4kUXb4blh6CA7KYNVOg2Kf+5HsN7gwng2ZtH0aaP+sXu/0ETNyrXmshKQJuThlOeM9c6jyNvK3nuecGyMv3Tv6rBl1Z0LaeOkvzAhQq69SQRoSDixtCgqGmCw83EniUj9d2trPRab3W5PIRJ/D/sZ3+p8BAcc3cd6/u/J1yDyZN8Svs2DAC2nPIIjnDyFw9vqRCvaAEYj9j72kYs1SV5sRgeiagyaNlBDJXGOiSo7YPdlfWkh7jqxOdyDg0lybLzuMaLDowkL8ZMBQZG976g3GNR2RQfwq4dHZBYOyjhagjzs/hXtVNbYo1V2XJkLhVrI4ohB6WYPdPuLDE/+DLylZ04IlpNAdgmZXerxXR+YkTR/8EOdsBeUEeoxLJ016DEPwY8FVEwjeFj/w5TFq75a3z4nDoCPtFwFHuxxe7PuMH91+O64FSi1qxnmu+MGTX65da3SRRQOCCcyJqoSaouOpmVr8Fq5MrwZMPTf8QboFeyB1tK6H3swEwH7RNIBwqBFqil+MIJWw3dkPYNrS9cUr/f4zKbVza1kRy4fsydOH5Orc6dooDDxbYajhfpBpng+liGVfx184MHuPhhGiIOkUxxCacziqQ9CA7f7l/iYJMeSLcDWC2b+H24fDOLLeoSe7MwfCza/Orzfb72iFqi6QQDjo8fkaoVnhBHgxvL0MeBUq7qb5muNGGMRW9QY/KY53OxE5xq4VdMfJ6MVvqfcZKwy9c8poOTRUvJPUHF1FttK6egR1RaT25wDwbchqwnjwkZmOTbj6xY6w0v5NzcCNs8qPGsJLc0JskS/CYTbafKzJXQzzm10tEUUa5kmkc1xgq27gcOgnVZKAqZW97DCiayDO23CxbKlykv6CnuNztYpSZ8bUS+v6qFoWMiGSoorrTjhW5kPYJCoIOg4P2ptXa+EQyIkKopl+b1Ci5WYHO/9ZjtoJrAHd2br2861H0L8eye0ixqYA9JxwBG/dJSXCoQxJJDGyzB9278KAn1Do0y50yDGingGJQmKzPby8kz11/KnI69J62PqKTvE1061YZw/RIHUVwRWK0iWATkpq2sNgSlO2qkqNFnf0qKTkReNJytQJBCaSzkb9fv/EHD0dN2A9DV5ausLyPe1dj5KDPDkABP0n/Az1zaMsG/8raNll0hrNj7j8g42V2b1EzCOwNixaZOAjgdbRZL+dHo8B2fcP3cmaK/9WBE9zoguQDR+bbgppOoB2AKfXYjefcnE94VgHW82Pf++JQWYKIZLeaZrFNsszComcH5GNZr1o6jwXQKf9+wt5qri/GfJ6zXVflrT7GbCI3rcQm+rw10GW9YLf61HP3ZhSkE5A4QjgfBywsU+vWHh+QvCxuV/1dNTN4RU3OW+hoFzkwvGLaMRSH5JX+J4RAWo8pWHH+6ZaHZv9NNeB1XiJfDQeSsTDvcXNgZ9CWq69tYGVT2OvYrDnFd3pQasmlZ0aTMv1ubgpiM0UXhVdXQiY/pGNc5IxMSFW5VFOTaT81bRFaJgDd4qV8qfv6s7EPsbyF+oKDuapWpKm/qkU+Z0yIo35hbLrEcn0c+l+g5uMt0f06EbBEMZLvrNi1jp9/DLTLZooWvY+EyO9KF7ogsqnpO6Wp1MneY4AFoaP4mBJJUosb3848On+KjzD5u3d4RxEL/LmdwgFBYh+MSm6MEyyvL5Oh7qghhiJCTc4Wvh4dlcKzNSrkiXFWpqQUkrXQD8AY7T4mZCVCJw76irhldN+ULW8Y4ggV7PETs7N7wIx38k1U5iyS0uzEIA2v5tcTwbdq1F8qke7J1PZIk4SCkP+ua1vDcoeobGI89vazAwqMOJG1/5BZ1qSu+bR2lmqzDV7JavG9cKcGhguPGd/Bgn532PzrCnFaqmDDpCRZqSIUunBwLD0MaT37cgOTPgBlCtgPHIWZ9iaksfecb98merxvxStsv2EJeqFOGXX7/nqik9JFNtt8x+G0xvwKxC+VBLGE/+GZrVVIKenft3HU2IPZyQ9JqDLotwdDKLud8eXJveTT28y4oLtRdB2lccu6G1z0i6loGjuS9NxXglHoKWEkiOnRQoqC1KeNvM4dE2pBFIm1fbd+C/TRh0Z5MZkbGY4tpn50AIsEaIo8oQhqqVniuwB4eG0f1oc/8czGN9cHpiIeXegPrVb1q+Q+M675arQ8lWnsKvKLEGfs3NWIbMGITRpWpZxB2z5BwwF8KPlUmqcGkUPaZP8XRuv1O1uGyj/9V6Tq52D+Soa47SKgo3Xqbjo18zJ7cuue78u2YDLfnnzvV9N2lQqFrBsoua/nSacwSu+35ftA+DyqOaEx4ggUufP6qtWnoIH82UcPJPx1mm8ataBGOZdrd4cdkkHN90Ny0tkXCDHklkt8z7oggHKnjWJJe/D51JshifS/fAYbyn5XDzSAdP2o0dD6E3BS9uKbAAKAf66/ET/fykjzTXhjdkj4Fqup7Kl2ozdAh8FoC5vtqiPMaPj0sR6Q43J2aZFzgyzA9ke68bP5FF5J2ze5KTfFUkYFFjLwK8g0D/YvPTkfrTdP9kD6Tj6VMNGKFod2X3wD127lJN1+eRTrwjuCdJcBxrPUFnm9BEsQJcUz+7TGzoXyPIHUu+QExlEumy9fyuu5mfJy2FhDv/RWEOOQVMg+832dV+sD+EpSb1SAqTtCLIvaTBQhM1BTsCli4BldBclSheGVss1NgEbrH7XU6K6CJLQXE+zwbkfgpyZAp69fipTCWnsghGkx+A0HZRMpUGzi6Vj0i4sE3LR0zTA7QvsFqaYyOHdDNe+2gzlPebrZmoa7LADIjnY4fb9q9cpUbUgwtg4A2HUQkGokNrG6dLy1IKKcJDrDnEO+LKSpznqTjCWEjvyDWQbEyRIiAX1pMRHvrWzs7KeZHMdgov8XKaSfyZ2TsWywvOtNYlqQqkX4iN+cefV0DItxa0+Vwuac6srETewbVCm8Hxi/rbFR6iv/8I0R9d0awVIq4InytrRoej5LW273CcPkj/9fYLg1lEAC+T2MJlZzq1OFaODBdctr1vZ1iE8+g24wg15VhyK7D5Znt9L8gvQYTpMWDXyU9DynCJGkur6tsvD141C2MWe/E0fvTGIzcWzaTmEEk7QQUszuzONYfMz/oXja9ok/as83aDWzR1QJfr7hkzjqFkUcTRm25sacLhXgn7YaSm9C7g4cBV383nJ/iUR7fAIji4Hg1XL6SIEhYlp8u2W6SHPRkaJC8/Wc+8vA0B2ezLrkKBu4GUnqcdIMH0iI++rQVQaCH2E+0uB4Z1q8e/wlLRgco6O5SvpDQksYyT1RMBK3+PPYvVzkrzXsr2NwjPnwmuPez00hzOG51Bx29/C54Vpn86liOj77XfLoO2l5PEPcVuaLckgXoPSY/7uJSqed+ejrnsPb6NOESi15gVK3CX7KZrJhebUq+0vKpoK++pEpc/psJiPOe3zr0z+nM96mQTX5A0OTl1K5+t1A6n8QOjXnRxwYkjcHpDk2v5foE/YdHy0/hoGp5jbOKekIw/t+hh7RFkIfZ7hlyuO5qn4s/8ND3El47Q0sbAeyU4+sa5hcgBejIbgT6QhvO+xWe0CT2BvRs6nI+O5J7DxE3FEh+LznbIcg6wiXbRTCrJiABUtVHpck44KgnNnqN2oEHgz5Srf1Mrdi43HIWZ2YzR82LMJ97hqcN+8UqNeYHhxoBqTT/FP/HFBRCI+jexTuYgV9bPW38ubE3RKvkByotnlSYpdY3o4cwybcj1+/uP2Xx3ubm7BvG9yH+/c7pOthQqVdCSA2DfL7ZbT9EcYW3wjWgqhBDhdFL53lPV6vvzggTuawY+1uOLQS/NaogUDFJfvnKBVe9/gz8QiKq3/1eUce6nstTPzFTaPZMW0vRzp4I4psU/jL0fqJ+zS4aTz4oIb96VGXOP8TlyEx3ghnIn5crQLV9dMjHDzsIbRLuXE8b05qeI1LTOLOAHzxno6pH8IoYF+Gf9xi+8MXKQErnHH539FxnNLzRKesoI6bSVugP00jWT6GTDhtkOuerjcG5xLP0vqhjrcza5wPlAAXDiJIDGNMatOvVuGhviCmlHaJJG/TGz7aVJqd/t5BKk3CICYeHPh2Qe3x/h3unhUBJE80fb9XXzKN4Yyd3EoHiaq7rNgNpXlNbyQO22wieHzfwQV0p73c5o4s4vcvN5QjWoUbAvbHlkWFXz5cau7u94933JRtuKPUhBEJcjeRedIeI41aq+jgDonL1eFuSYMbLD/KxWj1QZI6rObkUKsANd6tR7UZdTwSJwpZn06877Wg3NKKNAaFHtWcFfYaHbWYM4mNiZELsA6MKiWWh4lSrGSKZEilrqG51dmZLv2aGYVpys+JUbhZewx1bu3WgJAsna6IHZRH0e7PvHnzJnoudyIla8zdHJmAB7lk/fnU7TbWZKgcBGdRt+jzQYeEAxmoiHdnXruwwh2dgBS/zoh9MBpxuHPe8zHXtz5MXqjIf4uMwVv4lcB9rcGGfSH0N6xFg2hiMOYnUokDxiIFL+Vkwl1hKQ81lgh3zhl6hQchIy0m+A3kRpPeBCV0SZee28HR0JFodW2Mp63+mbiX6zFTHOJ0r+kr7hjw+WUJJUv0EtSnVdZ4LqkP87strYSLeN8ntk+OMzunh4fpuv+26ibBTCVdEr5HIbxzNHHvxW/cAN7QwpxlhCutmnGbJuI2nywSip/2B9hKqigBuA5f8AGgUrXhdeFcRVUWiSBTzs/dmhTXPBJ+cJlJPQt8xS8Tfm0TF5jedJs2EOkYBDc/OpD+TbFEX49jVGEsLQNft9vFfJGRM5BUk4Wih2GklCwppvZ5YIgYGpnDpOEsw6XxyeMi3Ja974C1z7pmJl1lDnMDzYCwIZjlhpcBpo5WIVFsqKkz0jNWcoMboNS1keb+gLSR9mugAfNlz8WAqErtCwzd/Hr6dI+ewMEDxmc2E+HMeEoFYnjj0JY6OhGTIswtrz3jQOC79QVM4JAVVLcDqTQ0gdFkEXpOhfTFGtpCjJqzbrxjRvBTzJ9k2VOeSRCq51XHM56stAFunLKNzK636zwvJj1AiAYg/UJvr8bfo6ythEpbokZq+tRCP4ilhqTmjm4Kjio0g6yDC1xnGKOJY68UjQd6sfG4KF7eNEZMn9Dev8Em2IL6onVQXyEScobS/y89kfKi9vtptdGy90NRtlTRxJ61ajGQXD7frxmscdduKJoOOiN3wC+jLFrUzAPhEbRc2cwxSkKTrPOia5mAivE1GLPpsEezgZoS+Cnzx+3OPB5wcaJZeXT+OzQjTTCyAiw2U9/+xyw17qLIPkUoMImyAMhlPGFHn9pvLlQtnsS9GkLH7UQKIYsyVX2v+J/5K06flAlmFDZbZnZte1VkWMdJhP8QA8MDXg0z5yeBXDkF7NWR1cG4b3sjbkhHzjMggcLz4HUbrxWwC/WiLgt5IUS9FReTsGKshx+GHw3hKhjNi9Pct4DOxX7Akrc4Qp5zaJuMMXS3YSHJ8va/vqwnIWeyGv0lL4Vm8tnj6lDsEQIMs9uLUodP0NkX9LWvRE75blrMoxNOUjcWauo+VEOQB5nWUaapDL2GGGzzO8FZ6llWZbp0h3xrymNMGPD8eN4bgs57MPm6z8/tpor2gSOC+fABTPa+/SArchGMj+FziTuekvvN1BWwsikjN1979WID0L+ftV0p+q4+ZskLenP9ySnxBAtbV6mDTSk8ln9rfiOv2MvZfOGgsKx4ObfmBj/9cKgifCTuk3KFdquYnW7Fb8pN28F9yip2YeT0GJnT42qaceZn+lExMLjQ6LXV/NHmseD9gizEKRaewGDRef95l5UpwwfoUsMAlE3uO7A4O+dOGLhfyNb2vZkO1jHw+14vlCD0gXhs2uPJw0+aCQ6F0kLxo+RCDmH8InkkM9Kpqah7M2SJaafrTcvwj8p9nXKJ/X8p28A5tbBB4IZFJgDLC1sb3Xj91DyWKssNCJFZsnhHFs6GFmE2oqt1cLxMMV/1a3fq2QTVPqHqG/vzaWryIOFzKsbNWlnFzM8tctI09uAxu9lDEKZidwkix9hU8HHKslt9LMLOpaUA/HqdR+dXJrakZs6X8zVtwpBDEDPyrxwWCuFS5hHkHqgJF3gHl1HdbOFDLN4PgL6CygO7h4YOn4ARm+QcPrNgThV2IMXfBTYy2IgAXu6q1oQKfNllB59/CDKtmLp66ZvHpe5sEfuorUsFamGbXur4FIsxPhYl/vauI8Z3j6WgQc/hT9s7IzBUGZ5oNPlT+l4wgXn03MJaZmjrvXR1mf+01jj3IqSF5Cdf8XKQBoUWGUYuPBt/1xyoUtkbV1mPf5oRGAjhMbgKfXdfD0kN/4Jn/uc5Hqva3C+3MXofpJPQm2itDbuVOoUL0cx7YFdmTZJPKyy8VCGRBeyxsR4AOV460NhLoHGnGQWvfjEyChLFqNqgpoFogrNVBjhvNPs6GNbd+AILR62XcyLNZVCNmHGpFomg6RtzTu23ZpJBJhV5Z4UMfNGTNiXl80II4MkcJe5SClyyuxCldb5hl9svuJencZV0FsF9yqOUKpmLeeP9fkBs2r3QqNJc3cXeGrZ57ilHToQMKMy5WcFzGA1UKE0ZnaZRz0uc9rggMz42Nzx/rhgBlR2fDnLHnV89Bw+4jMsb3GEU8Q+BYxO9wMRmcX0gM8lLevl0fcX1qBzRUt6RfXd/gnP1V7UMSkmvfm1uV4g58/tXe/By9D5EQ1n37QDAmj2GfCzL0kC59FC9AKHSBlhGG5slN0qBFNNZBYucPgs17kXwSu8m6wTq+mZpY+yzhi3D6BFvMUzyq7JpMwXSyEJ3Ur9vHOjM6g/eI5IH7m7VlFR6LFU7SMAvSN1aJj/kk0TZff4EHu6abnyReSBsDDTgH2qzXO8MejnnkPzBlxQvn6zqk2FUJj9ZJyTXF6MHpa3GU/2xIpwMVBjfeVPVCMGD4BGmaMn6DWzVSTSYwPMUavgDVnCGyow4wgaTF4do7RAqMYkuw8wM8l4g9Es4x/xJqrV2S3qiia9Fi6taXDaI68kaBm4np7fHaKjGhnQSmD5N5+QJ1x5XN67nOTpTpxUM6zObZqSLhgWruJ+4a9Krm4fJNgaXyKjAFcpirCySzFlxTGcI00g4dSWRPhWaOjoB9VOysu9SEIu+DE3QWhMsp/oufLPEgRHQktHj3x6TF+l42yqnHamk4K0IW1sDN9Ffnk4kQH9xdyIAJdgnyoZhjV+TVqWOp0JYArvJa5cabyW98eNfekhvDFiHaL3TCFTM+RtPimNCA+I7rY10BE43zEw0poNhm9NUOt+pS8oGPGe/xDo9CDFwf38rTBvu2BbNXWG2K96gJg8Elx8Y32Qap4bOa7iEgYrYnMgD7p8JgxqwrGP734hbo9oqsyzFbAObWeEXS7Ikl2sQGVDsrHzINL9BU45098YKtXK1TABNGb8Wnq46wuWa0xLhgzyAf33NF3glX+fN4p8Se2Q7CcB7qCSiCckiJ/uV5Z9x7acxgHswKddd+XSRiKnr2zO0SbJVp6Ro8P6l/H6JGVEGU9c4bzGtoR8SHyvC6MKFm9UhbrIoJqs/5GcbjZ22a+nyGry2cB+HknZCuxX+mfq9X5s/l+pSs9CVEyaUvgFF36G8ysXBTh52NiSgnxStRFycG+7DEs/BY+fDotguPx7mumeY1RK/0oM8UXpsWIzCLnGQhBsfy1CY/RTbLat5aZp0ABQqW8Az1bYE5ojq2qN3yabbqX6nVMxZOnL7RTabVMSH+1Iq0e9WiuATukeGE5pRisu7VtHdTyTgtPfs7NJqw8MoDsZZq6htDfXRC3DuSW8VLbjjdV62HuyTBjdd8Qo5yvloY+09Qc7A5PIP0zv8Ip/+7Hq+Kv64bzrn9VpLmrkshsOXCId1UdHst+yS0msJdi8WtBJE6KqGxg679XbJ0bN69rFTf4292dvSsl1pTpAib81HWPdycmTqGYJXSLgDeYePsR/Lep+AxfLQ1KpZaNIK8qoVgNK0tUhgUwmAf/yDKNC9uR3HX7xGYtTtztEb/EijwXKEnfiieJvrpLHyynVrc0UesWTE99aLLPYATW927hyGonWgU1YplrYfVNys7FKXFWZlWhHwUqawiyWONGBP+AxLpVTir9L8kczyU1VRK/LQ0Y/L1pnI4ZoOwJfeKLslp/ywafzMVKMBZ8+jImMPE1NGqnz/TAKI4EWWzFVZhuQ8rAwQr+USZJQM7+ted/jDV+rGrFh/p2/0vgEDLUls3CQ7PHpDE2HcXcQ2hf/9UEluaW6p9xqyiux5m4ZYDXRDx2Jo2R9gD9kPFKkYFucY7Ch9CbMF+QcJE7aCxJQ5FJoK5WCBq72mdu54yaZMux0C9fMd2RH2vgqBk+ZxtI/KgTqWyFDcpWTO9/54Z+P5TAAPTFCh/IZ9/6HpSBBz6YiHrXrWkruI6M/9mwJQ8nrFxbxywn5gA8i1+aKS9AC6ReKyEVJF9RFVcoamgFRLncP7nLX8R1wlTvhh46OKhfLB7W6gTEX/xhd9i8Kk7ARzQiMtPYTBrdqnQlOUtRHuWKlQ6M2h/Tc0/zsyhOiJ8Gu0LoKpkSvYGIAq9KphVnZ4tnRobHZcMST3qBMLJi/YrvTVsuqv37Ieke3X3CnFM6avIaVI4WMOoOlVa43XVUCWr70T7NpDUCJdSjNtHM3a2Vt2WxKFzg9p06A10yD5DdGBLgMLOKGAamJSct/rRA0/6uZ9R/sYSB3Ff7AIKpPWkolwtQq6BtpaROVRiGvkzgRUCedOigs35p8Vr3Qt6qMyXTypvsiiu/HahppHnrvhrcr4NenVZflJO+8kFpLZdoQ/XY6CI3aB8XsbMZ9QveofK1sdOaOL1V4d2cOpKnYIACUE1yFN9/CCvN/2G/Pfcz72UlqPRXtAynISTpSpTjKqyChsOkMpkf5BSCAtjNuEfrlR16Rb5sA9btQbcSbxAxaJhd0em9LWmIr/MkWyJd5BF0MhByyvPGs9AyfRdLeQAwhmiVEMKTUjOkC4Qy66jjnYkauiJ9oXbdyCLHeOwcq9zHUO+URkpfb7EzqxYJ3D3AcjRL+fzBSxCIwywrFyTkG1I9+WtN8FquTeClMV404VcOg3fQSLtGYNmLgZD+fdmVg4ziZQAYrMtR34R+bWo9pis0ur10rPnCrDsGj2asaOX6P7Kv5iWN8yI6HMmzELUEzePS6p1GJzbGhVtmN6WQCpYmRgzKlvWZDepYTXPtInZNFCfzUU2IfDHatYoNQ3w5AjZVm7Rr7NA2pIw5cEQlZTlv1EOkHHSRP60gQHM0uQvTwPWW1qb2Sz3Tow++dr4npkZ3mQStQxGk+ILsQ3GUgU3Xo91pSuGQBmduoZwfo2ElCyi9SY77P26PA42sEO8AAWseKeY7mPcnNTxUTFe79m78F8HPft1aEOdn/mB5880WMyZII4qmzn17A8moMV/kqbRygI7ecYQcjeo8hLbnRkPy9hbC8tmSiTvTtoBeZ6GPBtroXcxWmOJivFmQ4vRePrv1t0S+CkxlxJlZ8fI6Hiz6KZIACyaySlfZ5SKM9Xa/z1YtedvnKqiRXe3Lm0DxUvNHJ7A/ejmCCkoo/Tjm9qF7mU2hpvOXUjcRcNl+Wp6K4QpDKuC7lbjlPBIb6HqOXJWysAbnJPcpyuItsjTc0ZaTYG45YdIIYTC0EBq8z9UF9j6kx/pGItALH9dIHuTSE15Lh30V39jzxGcWNIhO7PureYIyuomi98eTxB6F/RcBT+ibNPU89+V8WxYA0XbuFV2r+ahUpfEc6NoDBrgbWUvSrfvS/aEcEvvnlip19BFdYUco+b3Rzc6ofbzA67L74SyF3kE9KFo56PCyLQkZ0IetpMayo92ZGYOTZmYBGxogC51l7S2GKRDN97MuvzDet7cSNysZKzG+R3Z+f5t/EKOP1HvEtsDTDW6wyIuEttWBAPxbdNw0LR79flTtDAXH95RVVYVyJhmJ5/nW3SlOBF7a5q4tHRD+3IMMv76bAoXFplYBERCso/wG39sxMpK7lQwz3Z6JeXg9uxRZMMLQhJS1DMcLLoECdy4OWPbNsg2fIGSRu37RRiXNvWteZgKFcfmyDYFk+3Kc98lUamSYkZX3AccgP3BJb/6r7mVFwAmKIRWtKhWyv96F114SFzQv96U+Vy7tNrcbDdmc2EHtdoPrfQznbT2p0aqL0gASFCeWtaSuhSNE99Iqo0j+T4TFeOojvmaqzhBVqOy0vqswTRxZS6I+tRNKZkhBXiCGAfS0XqLnY1bux6bY5Ky4879xRcRum9LtVezx90rtbrPyBvTCNiC6pQAqae1Q+sroODlTHQzDqktRa2N61ylirPVmvY1K2ALgF4AtXVwip7DPn2BNnGa/yuh3wlaVcIPdCnVNCOK68NOCSA645eH1OeUirAYcypwrPzFdCaTyIoDO+aD8d9ke7vgd2+qO3PXnKP6rSw+rECOeapiWrBsnLCj3Txeg2dfyGQ1Vj8VvX1uRrgvVXPqdLYIXWfJvrhElcL5e1Wc5tKxBWwKCxnuRrLf9Vt6aJqhQEWqJX2ivvaFT1+bTZ6IOyWNcE2ZW+1yEyQ8x9Z5p4jVzCgZi88oSw+ZSqyCEvHsXNISkDJoOiKx1H3g1RcpUukQGqnKmcFUyByMXWzZIZ9mxixsYdhcjT0l2tJq+VXR66EVRJ2Hw67cohr4u2PmrGbSNeRkC3EdbCSvfNeuFrl5Bsz3DguEEifzV6NwLpatrN9fwgGEDWcV6o2Q1kdzSZtvmRXoa4uKdjmpc3JOjoflT4o80kT/g6dMeogeHmgDQzHcvc3uTe08uIs3/nzQW/06UsDvxzqGvodkkuSNo6ExJcsmQj1LmU399xFimuH1bGKvX2adpdnLVDiz1bPDhHNr1+FmkfWL/jO9Qba2y5PGa/Qh9wDI+Vi03R6OlJ+U3qaoG0Or+j9AFktzNFYTvrJe/2h/tfbSpzSjsNZnr2f3+A9JQuz+cdairhgq6qgjAOuiZNFH3v5TiBinr4qJnU4kYKiwrKmfvmHt0MOmwIxlArff/4RUEaSQxOYUuvZcALABDv3ia1Ksnenn+fDjCQ45l4g67VpF/lviDTvEguNRsKOg/c7ksqzM99LbP/BMfbYuIamWbphzIXYwhjvAhbaptWAUrFEmCtLeGBNX0wdZKqxEJ3uYJIPH2AENOQAau0wCYbSG8wkLny64KnuXxxwxlRiiNdycDujGTjyuoToq/ARIoYa14MIFYrfhTbZitxWYQJyGzQgr6h7oG0aEn+gVZ6oPmx/V+HwsboqIEXT6K0PTGrWRcyvKsjOA+xAqPbaEW51XpoGnJjNUhQ0oLRcsYGXPTkdQsfWZ/AigJcsWfHGpZ//q7iq7Qr2TaaF8lje/e3Xfdyvf75j2AIVoSdhXewPQ8nAKlTSQROp1Ien9GJd2viDMQAhtpHNaChjqtMlGwKc8Vf02v+uZ1zF2V9ptuGYlzNvc+5TgU7yBSZuZl+gzGPrEG6e8664fgNn0FDF5wVkwEsgwLDLBPwhTAilvKFSRa5Gzf55dJrQMI/r4rwix8MhpyLIn+0Ydo161IGm2YloUXLdHfJi1PrFyIGO3YvSFp8d8qX7a7FuPvN76yPB6QhNBXHF3j8dVr8qAdslVQ2IFbJAiNqBNbX0Q8K5lJEnw4LOuL5d6lYgieSk+utm1I/YfffKGVg/Oant6J7FCVMUHLLrDBHbugh5+Jm5wp0Zf0836LldRoaSXQty9W2hc3belWDTRb9tH2464o4hNMXSfS91g+tw3/9oOtII4A1PmeK6SLVaj8gGE6u0r3u5mcnfwg+HKvIcri8/OzY++G02hqmRdyt1QoRi/6LINaWfRUgWOneBLjXK0iatFOTVwqYfqh+TIYPwqE9dBJqbfOK8rmzsGLd1Q+omCSiNgC1/GSwJIa1Ooojq+1NM/Rzuz6uva6GIrEscMftPaIMbrg6nNfN+UxNmq2DhSxArrrUrCuEgAcN3cPrF9f4jL/8F8iy1q4LAF35gP2s+ti81VpzP5YiZGE7DM+diSvupSIbtig/O0lnDLjK20F3jIpRM7HG1wmZwKnNVJK7/gFGthqs5nWG+6AiyJvYPs94ywhwxefzj/I79H0bPpazyvp6mBgA2WJ2AMa9P5OtbqCVjzMYrE5BuETtrkzHEjIvr4OpW41HO2+g9e4rB7WFhu+KBB+TGpwGjKotfyEv85aDfBsjLLHm+U9TG/35SQWdhrM4/XSN248NW6JNxVd3O6G2lzw+iw5Nr1cQeP9CEx/fUEkocLn/HIq8Ljun5GOGbST/tACx57XZH642EMKkQYT4vpiM3LK1ZHIxnWwjxRtk/uCf/tGCBD2YPpeRK7fY4CtbKGSe71XVi88AsGBLNLA/ucM/l1Z9KzsTIacjpqPAXS8ZktAfh65JwihCiTftbKm+/M6I6DU1ZBIMfeaPI2vnAXXRVeIpm3QN6MA2GBCai1SvD3tvmRuDjx+U0AWY1AJ9mtFe0/TMCT+vt4dqyCkVgl/fGpcUW2qvllangmyTr3ehgJf7rVqsm7xBm2pj0hyNFpq2VBudPdeQah9aXlaOa6FFxGHVYUbiLowRxlirwJ+evnE5yy2FcGFGfsH0XcK36R8xL43R8CWbre0Fy2KVMBPLhR130hXG/bFwAaiebqhwVMrR0eA2N7SOy0vv8HyJSW1T89Qsyv5YyfNaSnkU730L/w6Z+k30n/MFn7lHZAVjP+kYnPlIcZ8Ycv2dlMPcFI4xdRNNErIcFEvVzoxUp13+LErwdeBxSHhT3DMVNVNyHdSETzKZdZ83i8yk0QHk44j2ghiQvr3iy88EU75YvepVBPlWMUHZzMyQPcrfsB0oi5R/qE+aD4IxldBLTnc7RGnrsnjBf+Vs1aHETc1/g8rlr8EnujAOpiadjkju/mjmgu3w1j6msJLAF524vQSZRTb/fOJNImDo05B9R1xv/sF8thOHmspiyNB7tJu7imOHFCIshfaUZQLvLTRRF/1y7DhSVlE3/w2ZV3HToIbxOnbS11mUelG2VqHsXkZKEkgTF0/zi1HkmgxN37ukJI2FyXKznzufWLtVEmAQ6F4kMXrTfpLMd9nTYXXtetqevSSbwwWZfNLOQOWrZSTNCAqd7ApFfnPmitEsXqyOb/Vydb5q3/ijmQXJNQQi2VcpwsU7ZZ6sG6r58FSn9RIvzYS5hq1bE353h1i2ewQS1HxfZA+LklPsRoPflxjIL7rDRcyiXGu1AIJXZfZYzjybhwuY/iSNA52Ed8HcPWXNmekc3l0IJMCxnMqISd0HKjgCBdxEvsdaj+NJhdB1a/yQtLpDfy9Cmz/AOhJ6UXuerVQw70XRziPeM6Mt38hRVu/pZnQHXTorcxJIlmdu4n800qoeBSbKyCmHdvzouJ0WM5oAxw+5UUTWZdsfyD47eFpXvxzZjB1V5/hH6WhhDi9aSRGYUNg85DCzSGfWsPbTJS18u/B/SduwPVad6YPsqCCN+nts5irK+2xeEqwXgXN61z5pKw3MpGE7op//zG28WlBtzBbNvGSf6fx8da7mDMjatDhZTQUojAOy3i+hW/GGxLozJBL/FOcY4UXUawHBCDhtaxGDcXx2Li/8RExNCXf9cjJI3OiDkSlI80VFDgkkb9v3QgqYJqluMFIxvNJ3KhcPJvGy68PMsc5KHKAHBvErRhKaFB5OVwTLYwgkFSQnBw18FwoJurTKAKtCQ7Ka12BEDTTvamieHfDJT9Lj/sMlMYBUGNv8r4bgliw/PAreBVistmddyx09UXnxylMtEjYDgtCxk5gTLR6x07A7xUqrRNAv4/OWQdJ7JSV9OQ1CfFeVBKwB0FCLwS166bTpQ6G4O3rY4yzMtEIuY6DWPNd77pD3oDCSCl5lmWzWWceo4DO8ck9DuiI1RYKO0UE5vx6PPesHWTDnZe7WC+g2Gm/5pF4MwzQ7Bp/sEQdEN92rYRpiu3xO/CLpd0zOLptRUSjM8UeRgKm3eeVIA3npJ01SgdMkxUVecEPWSEkye3jK9ocZydrkXmtbRTxiidpQ+tCzcInFSTizn9aOJxs7sIbCu9mp/jUdbGBIycYuHHviAAky54FU4YYhM1ey64WZGNJGx9jLqMGhjfGGsMwc6pSrMaXiaLFDQ4r/bdWEK9SCQ8PgOYImXv1a9l0Hl3LOuXmBIlo6sZ95EzhqRWxJO8FdUL5w6mqBoR7IN07iGdFXFcWYQyblJXHb6N2qseQLP15pTa/3C2PWfslbqoxglHjI58LH+byWrnnRUBPfciJUzXe/qesEjBZMbRx2D8wa/gRNnynkEvsOcxEwYzJavAg275fSxFQXc7XPve8JAKZt03g+lkCAaTtAFUJqMmK4w1Mkk5rkg9HPRHzawkz5yHeaINeOSfr1vTQ/esFajAu+y3aKn/DA/MfRcButjC2MMgDKKFiCfXYWk++Bh1JA+ab2D0LvmKmHf/H4GNqp+7uLWGA90a1LqILc/ACSpbkVdBAMgnxtqC/V/D6/qvyKx+cEok3TP4DNz9ikQYMdFTyMOW/Du/yc/BJbcpwGUawcX+q6S1vZFFePcGkE75luveq6L0zv7iC25nAow2BZoawAMBuoZsNb3NcvzMisDkYeHQ/oPJSKMo5C8D8E+J6AuLcoqezF9i6fVUJbRqk0nDB46XqRwA+amaMy68TBZD6D6md2rhiY312+OO8E/fD5ux/ObZL30BV8iRsDsbQgAv5rwkjmtEKp3+MZfaP8Ua8N1D6dYEJQbDXq3aj0tdkQysI4shCmmhDNi+/+qwMmkelpRs/4jewzdhFu0p1G/p0Di7nxejKAfDDPWExhfAOH5E2V+VYvDLBEmC2tdRBKvxf1AI2PmCHTepC6L8A3pkXfXiTCGNPKmCAKExjNsuumpSJGGLppsgVJ11bp2RPvBg9xxAuvqf11gh5tEsL4xJ94RsG48vtwnn0AWYXqStHj2D4WU4hKhGdjZJPk/nhg+GVayOiWEPEldX5LfH8yrzzVQOXaTn88NaCBRvvgXED1lj1TD7I8hjRuJOuuVCorPEbpaUqdEuGrVawaWrx26hLjaFqIp/2osvki3uUDPkBH2yPgky0PjZrMh1wfWPiJkEn/72/BoxpZ0smOITLyZ6f2wEKMTymQKmkZlP+6tfKV+cEVObln+FY9nZdUH53E0D2tgZX1WfCzNfJpDSBjUrIPcUbnC3BSpeRNZQpoNLntqosx8heIDVkrCBvCO5a5vsaN5nW+71ZAfNZ2lnd/43oxaTTUDLECRmuXoX1NQGWBs/WDkFBfImjKAA2vEpuSGlDgzWktJS+om5Y+OzOhSTHL0he2W1G54lrkYMkmmoTuz21rJlvaOHgifclNiu3JTvdMhHw8Is7d1ddvPeDZG14gG5Gh4z8qHW/AHSdUyTSgaXSPfKwsVIZHh40nivO02rqQ8Lm8GSQprxdOEIYvumeaObTHhi//t0UWtZWf4oeTZLpF0fpdc+qAGCHcHS6Ysw5L/KadtanlrH0EvXAsd3bGwmBZAECmesY6uG9zfnUQzxYU2UBY96y6Rxm/JEZZQ9M+ctWOl5Qt4KkJIixC8NEmWkoyYeODgAmWW3bH8EpSyz5rPWff/reEwZpEBS2VzU115Yh/Ha28K0k8nfUPW2yPBbECIiW8pGQH51cFWYYwUqrWLJoJ1siuhT/wFXe8crNJlO+ImtSJdiM8nUl90yBSvttRGBarDtO7i9ahL4lRXruq7bcQDXKK0eBoGYQSp8hlrh/hXcA5r3SzPpyaSEFUJAJijNhB7CSqRxuG6P0wR39x39Wqc9zuGnNkH8er2z1UW0RX86u9Q0g6ajp9SiVBLgkubWE1KriVxpWdlu+9qx3YnzK18JUOKuSKXQRs1lx9/b5lkP8U3AzHWb5J99SOAt/L9pn+fsmrlVijY3JSzGaTbUQxDOoRPKc/oizlw+P9Teyew17tYie4dCWyHeqGZl6jK9pY4euPWSeWYbK0PH1X/wHGe/e1H4aw8FhWdjncCH7X+0zZt4zw7XK5QRX+oSVVaYO6mZIKsLiCeqa2sD+XK6dQaxuuf2xVPhjYzNjYsACGPnCsgY+rmwmSD1O6oX76xAC4GPDlKfRLCeFo2vvplOhsPUn9lAXeZs/dCNiFIQE35ErSpNJGAbUgZ4npX/i+4xU3JEY5zbDNovzkHN3npq3Vi8c1WFg5QfQE+NdyRfwtVJn38xf1ksD0MLyFjP7lfjGXxkx3GGq7VUizJ9lEs/byTl8Xp+keSYghT4ASkjRDzLO8lNpX+1Oxd4uJXBj5SOE+GUcsQDWHhgvYTZwEqRFERjlCSS5JWYUcWuY2/TeFT4L08AL7YjYQTw+Uv8XclUbD05oHid7YXj9i2APdPqQw4Qt4fx+oK6E7TFHTSskmU+hKLsgMoiZTGy0FDV9YmYE4bxxGobvQzGSGYtMOfBb//y4y6q")); \ No newline at end of file diff --git a/src/TcpClient.js b/src/TcpClient.js index 8966f7e..d53023e 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -346,8 +346,8 @@ var len = request.length; var buf = new BytesIO(8 + len); - buf.writeInt32BE(len | 0x80000000, 0); - buf.writeInt32BE(id, 4); + buf.writeInt32BE(len | 0x80000000); + buf.writeInt32BE(id); buf.write(request); conn.send(buf.buffer).then(function(result) { self.sendNext(conn); @@ -446,7 +446,7 @@ var len = request.length; var buf = new BytesIO(4 + len); - buf.writeInt32BE(len, 0); + buf.writeInt32BE(len); buf.write(request); conn.send(buf.buffer); } }, From 83edc0f070136822b119d7a51e6400756ebb1d9d Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 28 Feb 2016 19:09:27 +0800 Subject: [PATCH 17/86] Fixed conn.connect --- src/TcpClient.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/TcpClient.js b/src/TcpClient.js index d53023e..79ff53e 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -251,7 +251,11 @@ } var conn = new TCPSocket(); var self = this; - conn.connect(address, port, tls, this.client.options); + conn.connect(address, port, tls, { + persistent: true, + noDelay: this.client.noDelay, + keepAlive: this.client.keepAlive + }); conn.onclose = function() { --self.size; }; ++this.size; return conn; From 23ef0b0dae5e20c26f19760600946ca56d6d0dec Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 28 Feb 2016 19:26:49 +0800 Subject: [PATCH 18/86] Update hprose-html5.js --- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 67b56a7..4c9c5d4 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -5,5 +5,5 @@ // https://github.com/hprose/hprose-html5 function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,s=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(s(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var o=arguments[0],u=0,c=o.length;c>u;u++)n.set(o[u][0],o[u][1]);return n}),!r){var o=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(s(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:o(),"function":o(),unknown:o(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var s=e.document,o=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=s.createTextNode(""),r=new o(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=s.createElement("iframe");e.style.display="none",s.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=s.documentElement;return function(){var t=a(arguments),r=s.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?s&&"onreadystatechange"in s.createElement("script")?l.setImmediate=u.readyStateChange():s&&o?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():s&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&M(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||U&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return N(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function o(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return o(t)}catch(r){return s(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return P(e,function(){++t}),t}function l(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(function(e){a[t]=e,0===--n&&s.resolve(a)},s.reject)}),s})}function h(){return l(arguments)}function g(e){return e=i(e)?e:o(e),e.then(function(e){var t=new r;return P(e,function(e){var r=i(e)?e:o(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(s.resolve,function(e){a[t]=e,0===--n&&s.reject(a)})}),s})}function p(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&s.resolve(a)})}),s})}function d(e){var r=x(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function y(e,t){var r=x(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function k(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){M(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function j(e,t,r){e?E(e,t,r):t.reject(r)}function O(e,t,r,n,a){function s(i){O(e,t,r,n,i)}function o(e){j(t,n,e)}if(i(a))return a===r?void o(new TypeError("Self resolution")):void a.then(s,o);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void o(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,s(e))},function(e){f&&(f=!1,o(e))})}catch(c){f&&(f=!1,o(c))}return}}e?E(e,n,a):n.resolve(a)}function A(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==C}}})}var C=0,I=1,R=2,U="Promise"in e,M=e.setImmediate,N=e.setTimeout,F=e.clearTimeout,P=Function.prototype.call.bind(Array.prototype.forEach),x=Function.prototype.call.bind(Array.prototype.slice);Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:u},value:{value:o},all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:d},run:{value:y},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:k},reduceRight:{value:S}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:C,writable:!0},resolve:{value:function(e){if(this._state===C){this._state=I,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();O(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===C){this._state=R,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?E(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===I?e?O(e,t,this,n,this._value):n.resolve(this._value):this._state===R?t?E(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case C:return{state:"pending"};case I:return{state:"fulfilled",value:this._value};case R:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:o(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:o(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=N(function(){n.reject(t||new TimeoutError("timeout"))},e);return this.whenComplete(function(){F(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){N(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=x(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=x(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=x(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?k(this,e,t):k(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}}}),e.hprose.Future=r,e.hprose.Completer=A,e.hprose.resolved=o,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},U||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var s=r.charCodeAt(i+1);if(56320>a&&s>=56320&&57343>=s){var o=((1023&a)<<10|1023&s)+65536;e[t++]=240|o>>18,e[t++]=128|o>>12&63,e[t++]=128|o>>6&63,e[t++]=128|63&o,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=s;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&s)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&s)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));r[n++]=o>>10&1023|55296,r[n]=1023&o|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function s(e,t){for(var r=[],n=new Array(65535),i=0,a=0,s=e.length;t>i&&s>a;i++){var o=e[a++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=o;break;case 12:case 13:if(!(s>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&o)<<6|63&e[a++];break;case 14:if(!(s>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&o)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(s>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&o)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function o(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):s(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return[e.subarray(0,i),i]}function c(e){for(var t=e.length,r=new Array(e.length),n=0;t>n;++n)r[n]=e[n];return r}function f(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function l(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case l:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function h(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case l:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return o(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var g=!0;try{String.fromCharCode.apply(String,new Uint8Array([1,2]))}catch(v){g=!1,Object.defineProperty(Array.prototype,"subarray",{value:Array.prototype.slice})}var p=new Uint8Array(0),d=1024,y=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(l.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=f(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,d),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case l:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=y(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=y(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=o(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=o(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){if(this._off+e>this._length&&(e=this._length-this._off),0===e)return"";var t=this._bytes.subarray(this._off,this._off+=e),r=g?t:c(t);if(1e5>e)return String.fromCharCode.apply(String,r);for(var n=65535&e,i=e>>16,a=new Array(n?i+1:i),s=0;i>s;++s)a[s]=String.fromCharCode.apply(String,r.subarray(s<<16,s+1<<16));return n&&(a[i]=String.fromCharCode.apply(String,r.subarray(i<<16,e))),a.join("")}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=o(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return o(this.bytes,this._length)[0]}},clone:{value:function(){return new l(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(l,"toString",{value:h}),e.hprose.BytesIO=l}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){s.set(e,t),a[t]=e}function r(e){return s.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),s=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=E.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&E.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?j:i(e)}})}function s(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void o(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case k:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function o(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),s=("00"+t.getUTCHours()).slice(-2),o=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),s=("00"+t.getHours()).slice(-2),o=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===s&&"00"===o&&"00"===u&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),s=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==s&&(r.writeByte(S.TagPoint),r.writeAsciiString(s)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.write(t),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.writeString(t),r.writeByte(S.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;n.writeByte(S.TagList),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a]);n.writeByte(S.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;r.writeByte(S.TagMap),a>0&&r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var o=0;a>o;o++)s(e,n[o]),s(e,t[n[o]]);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){s(e,r),s(e,t)}),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,o=r(t);if(o in e._classref)i=e._classref[o],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,o,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)s(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a]);n.writeByte(S.TagClosebrace);var s=e._fieldsref.length;return e._classref[t]=s,e._fieldsref[s]=r,s}var B=e.Map,k=e.hprose.BytesIO,S=e.hprose.Tags,E=e.hprose.ClassManager,j=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){s(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){d(this,e,s)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,s)}},writeMap:{value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:s(e,t);break;case ee.TagDate:case ee.TagTime:o(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t), -i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return j(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return j(e);default:r(t)}}function j(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),s=r.readByte();if(s===ee.TagTime){var o=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;s=r.readByte(),s===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(n,i,a,o,u,c,f)):new Date(n,i,a,o,u,c,f)}else t=s===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),s=0,o=r.readByte();return o===ee.TagPoint&&(s=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,s)):new Date(1970,0,1,n,i,a,s),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function F(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function P(e){var t=F(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r[a]=s}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r.set(a,s)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return E(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return P(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function E(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case o.TagError:r=new Error(i.readString());break;case o.TagFunctions:var s=i.readList();i.checkTag(o.TagEnd),A(e,s);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function j(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var s=0;sn;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var s in a)s in i&&(i[s]=a[s])}for(var o=0,u=r.length;u>o&&typeof r[o]!==w;++o);if(o===u)return i;var c=r.splice(o,u-o);for(i.onsuccess=c[0],u=c.length,o=1;u>o;++o){var f=c[o];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(o.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Pe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function F(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function P(e,t,r){var n=U(e,t,r);return n.writeByte(o.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,s=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===o.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===o.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===o.TagError&&(s=new Error(h.readString()),g=f.readByte());g!==o.TagEnd&&(s=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){s=p}s?i(s):e(a)},i)})}function x(e){return function(){e&&(Pe=!1,s(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Pe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(s){r.onerror&&r.onerror(e,s),i(s)}n(a)}catch(s){i(s)}},function(t){F(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(o.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,s=new c(r),f=new l(s,!1),h=s.readByte();try{for(;h!==o.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===o.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(o.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=s.readByte(),h===o.TagArgument){if(p>=u.Raw)g.writeByte(o.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=s.readByte()}}else h===o.TagError&&(p>=u.Raw?(g.writeByte(o.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=s.readByte());if([o.TagEnd,o.TagResult,o.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(o.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Pe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Pe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)F(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&F(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Fe}function K(e){Fe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function se(){return Re}function oe(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(s(E,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var s=2;i>s;s++)t.push(arguments[s])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var s=function(){N(rt,e,[r,a.handler,s,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,o=i.length;o>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&s()}},callbacks:[n]},Qe[e][r]=a,s()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(s){return h.error(s)}}},P)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ee(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function je(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Fe=!1,Pe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=P,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:se,set:oe},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:je},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var s=e.setImmediate,o=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=o.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var s in d)a.setRequestHeader(s,d[s]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var o=new Uint8Array(n.length);o.set(n),a.send(o.buffer)}return a}function f(e,t){var n=new o,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);s.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,s=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===s&&n.length>=i&&(s=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),s),i=4,s=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=s}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function s(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){s.call(this,e)}function u(e){s.call(this,e)}function c(e,t,r){function n(){return b}function s(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new o(T)),S.sendAndReceive(e,r,t)):((null===E||E.uri!==T.uri)&&(E=new u(T)),E.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,E=null;Object.defineProperties(this,{noDelay:{get:n,set:s},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(s.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var s=new n,o=this;return s.connect(i,a,r,this.client.options),s.onclose=function(){--o.size},++this.size,s}}}),o.prototype=Object.create(s.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var s=this,o=i.timeout;o>0&&(a.timeoutIds[n]=e.setTimeout(function(){s.clean(a,n),0===a.count&&s.recycle(a),r.reject(new TimeoutError("timeout"))},o)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(e){s.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,s=n.timeout;s>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},s)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var o=t.length,u=new g(4+o);u.writeInt32BE(o),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizew?++w:w=0}function l(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?B.send(n):n.buffer.slice?B.send(n.buffer.slice(0,n.length)):B.send(n.buffer)}function h(e){_.resolve(e)}function g(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--m,i.resolve(r.read(r.length-4))),100>m&&b.length>0){++m;var a=b.shift();_.then(function(){l(a[0],a[1])})}0===m&&(k.keepAlive||y())}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),m=0,B=null}function p(){_=new u,B=new c(k.uri),B.binaryType="arraybuffer",B.onopen=h,B.onmessage=g,B.onerror=r,B.onclose=v}function d(e,t){(null===B||B.readyState===c.CLOSING||B.readyState===c.CLOSED)&&p();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r], ---m,e},function(e){return e instanceof TimeoutError})),100>m?(++m,_.then(function(){l(r,e)})):b.push([r,e]),t.oneway&&n.resolve(),n}function y(){null!==B&&(B.onopen=r,B.onmessage=r,B.onclose=r,B.close())}if("undefined"==typeof c)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var w=0,m=0,T=[],b=[],_=null,B=null,k=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:y}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.BytesIO,u=e.hprose.Future,c=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,s=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var s=JSON.parse(a),o=new n,u=new i(o,!0),c=0,f=s.length;f>c;++c){var l=s[c];l.error?(o.writeByte(r.TagError),u.writeString(l.error.message)):(o.writeByte(r.TagResult),u.serialize(l.result))}return o.writeByte(r.TagEnd),o.bytes},t.prototype.outputFilter=function(e,t){var i=[],o=new n(e),u=new a(o,!1,!1),c=o.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=o.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=o.readByte()),c===r.TagTrue&&(c=o.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return j(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return j(e);default:r(t)}}function j(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),s=r.readByte();if(s===ee.TagTime){var o=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;s=r.readByte(),s===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(n,i,a,o,u,c,f)):new Date(n,i,a,o,u,c,f)}else t=s===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),s=0,o=r.readByte();return o===ee.TagPoint&&(s=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,s)):new Date(1970,0,1,n,i,a,s),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function F(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function P(e){var t=F(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r[a]=s}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r.set(a,s)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return E(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return P(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function E(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case o.TagError:r=new Error(i.readString());break;case o.TagFunctions:var s=i.readList();i.checkTag(o.TagEnd),A(e,s);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function j(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var s=0;sn;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var s in a)s in i&&(i[s]=a[s])}for(var o=0,u=r.length;u>o&&typeof r[o]!==w;++o);if(o===u)return i;var c=r.splice(o,u-o);for(i.onsuccess=c[0],u=c.length,o=1;u>o;++o){var f=c[o];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(o.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Pe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function F(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function P(e,t,r){var n=U(e,t,r);return n.writeByte(o.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,s=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===o.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===o.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===o.TagError&&(s=new Error(h.readString()),g=f.readByte());g!==o.TagEnd&&(s=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){s=p}s?i(s):e(a)},i)})}function x(e){return function(){e&&(Pe=!1,s(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Pe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(s){r.onerror&&r.onerror(e,s),i(s)}n(a)}catch(s){i(s)}},function(t){F(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(o.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,s=new c(r),f=new l(s,!1),h=s.readByte();try{for(;h!==o.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===o.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(o.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=s.readByte(),h===o.TagArgument){if(p>=u.Raw)g.writeByte(o.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=s.readByte()}}else h===o.TagError&&(p>=u.Raw?(g.writeByte(o.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=s.readByte());if([o.TagEnd,o.TagResult,o.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(o.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Pe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Pe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)F(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&F(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Fe}function K(e){Fe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function se(){return Re}function oe(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(s(E,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var s=2;i>s;s++)t.push(arguments[s])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var s=function(){N(rt,e,[r,a.handler,s,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,o=i.length;o>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&s()}},callbacks:[n]},Qe[e][r]=a,s()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(s){return h.error(s)}}},P)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ee(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function je(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Fe=!1,Pe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=P,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:se,set:oe},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:je},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var s=e.setImmediate,o=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=o.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var s in d)a.setRequestHeader(s,d[s]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var o=new Uint8Array(n.length);o.set(n),a.send(o.buffer)}return a}function f(e,t){var n=new o,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);s.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,s=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===s&&n.length>=i&&(s=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),s),i=4,s=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=s}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function s(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){s.call(this,e)}function u(e){s.call(this,e)}function c(e,t,r){function n(){return b}function s(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new o(T)),S.sendAndReceive(e,r,t)):((null===E||E.uri!==T.uri)&&(E=new u(T)),E.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,E=null;Object.defineProperties(this,{noDelay:{get:n,set:s},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(s.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var s=new n,o=this;return s.connect(i,a,r,{persistent:!0,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),s.onclose=function(){--o.size},++this.size,s}}}),o.prototype=Object.create(s.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var s=this,o=i.timeout;o>0&&(a.timeoutIds[n]=e.setTimeout(function(){s.clean(a,n),0===a.count&&s.recycle(a),r.reject(new TimeoutError("timeout"))},o)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(e){s.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,s=n.timeout;s>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},s)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var o=t.length,u=new g(4+o);u.writeInt32BE(o),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizew?++w:w=0}function l(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?B.send(n):n.buffer.slice?B.send(n.buffer.slice(0,n.length)):B.send(n.buffer)}function h(e){_.resolve(e)}function g(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--m,i.resolve(r.read(r.length-4))),100>m&&b.length>0){++m;var a=b.shift();_.then(function(){l(a[0],a[1])})}0===m&&(k.keepAlive||y())}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),m=0,B=null}function p(){_=new u,B=new c(k.uri),B.binaryType="arraybuffer",B.onopen=h,B.onmessage=g,B.onerror=r,B.onclose=v}function d(e,t){(null===B||B.readyState===c.CLOSING||B.readyState===c.CLOSED)&&p();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){ +throw delete T[r],--m,e},function(e){return e instanceof TimeoutError})),100>m?(++m,_.then(function(){l(r,e)})):b.push([r,e]),t.oneway&&n.resolve(),n}function y(){null!==B&&(B.onopen=r,B.onmessage=r,B.onclose=r,B.close())}if("undefined"==typeof c)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var w=0,m=0,T=[],b=[],_=null,B=null,k=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:y}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.BytesIO,u=e.hprose.Future,c=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,s=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var s=JSON.parse(a),o=new n,u=new i(o,!0),c=0,f=s.length;f>c;++c){var l=s[c];l.error?(o.writeByte(r.TagError),u.writeString(l.error.message)):(o.writeByte(r.TagResult),u.serialize(l.result))}return o.writeByte(r.TagEnd),o.bytes},t.prototype.outputFilter=function(e,t){var i=[],o=new n(e),u=new a(o,!1,!1),c=o.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=o.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=o.readByte()),c===r.TagTrue&&(c=o.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 2a7939b..35a3141 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file From 3ca7a891bd3a9a91c70f4680818eb3ef957f8e8e Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 2 Mar 2016 18:33:37 +0800 Subject: [PATCH 19/86] Added .jshintrc --- gulpfile.js | 2 +- src/APICloudTcpSocket.js | 130 ++++++++++++ src/Base64.js | 134 +++++++++++++ src/BytesIO.js | 37 +--- src/ChromeTcpSocket.js | 186 ++++++++++++++++++ src/Client.js | 9 +- src/Future.js | 91 +++++++-- src/Helper.js | 87 ++++++++ src/HttpClient.js | 57 ++++-- src/Polyfill.js | 415 +++++++++++++++++++++++++++++++++++++++ 10 files changed, 1080 insertions(+), 68 deletions(-) create mode 100644 src/APICloudTcpSocket.js create mode 100644 src/Base64.js create mode 100644 src/ChromeTcpSocket.js create mode 100644 src/Helper.js create mode 100644 src/Polyfill.js diff --git a/gulpfile.js b/gulpfile.js index 5211bb6..5261095 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -11,6 +11,7 @@ gulp.task('clear', function(){ gulp.task('uglify', ['clear'], function() { return gulp.src(['src/Init.js', + 'src/Helper.js', 'src/HarmonyMaps.js', 'src/TimeoutError.js', 'src/setImmediate.js', @@ -42,7 +43,6 @@ gulp.task('compress', ['uglify'], function() { .pipe(gulp.dest('dist')); }); - gulp.task('default', ['compress'], function() { return gulp.src(['src/CopyRight.js', 'dist/hprose-html5.js']) .pipe(concat('hprose-html5.js')) diff --git a/src/APICloudTcpSocket.js b/src/APICloudTcpSocket.js new file mode 100644 index 0000000..6867d81 --- /dev/null +++ b/src/APICloudTcpSocket.js @@ -0,0 +1,130 @@ +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * APICloudTcpSocket.js * + * * + * APICloud tcp socket for HTML5. * + * * + * LastModified: Mar 1, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Future = global.hprose.Future; + var atob = global.atob; + var btoa = global.btoa; + + function noop(){} + + var socketPool = {}; + var socketManager = null; + + function APICloudTcpSocket() { + if (socketManager === null) { + socketManager = api.require('socketManager'); + } + this.socketId = new Future(); + this.connected = false; + this.timeid = undefined; + this.onclose = noop; + this.onconnect = noop; + this.onreceive = noop; + this.onerror = noop; + } + + Object.defineProperties(APICloudTcpSocket.prototype, { + connect: { value: function(address, port, options) { + var self = this; + socketManager.createSocket({ + type: 'tcp', + host: address, + port: port, + timeout: options.timeout, + returnBase64: true + }, + function(ret, err) { + if (ret) { + switch(ret.state) { + case 101: break; + case 102: self.socketId.resolve(ret.sid); break; + case 103: self.onreceive(btoa(ret.data)); break; + case 201: self.socketId.reject(new Error('Create TCP socket failed')); break; + case 202: self.socketId.reject(new Error('TCP connection failed')); break; + case 203: self.onclose(); self.onerror(new Error('Abnormal disconnect connection')); break; + case 204: self.onclose(); break; + case 205: self.onclose(); self.onerror(new Error('Unknown error')); break; + } + } + }); + this.socketId.then(function(socketId) { + socketPool[socketId] = self; + self.connected = true; + self.onconnect(socketId); + }, function(reason) { + self.onerror(reason); + }); + } }, + send: { value: function(data) { + var self = this; + var promise = new Future(); + this.socketId.then(function(socketId) { + socketManager.write({ + sid: socketId, + data: btoa(data), + base64: true + }, + function(ret, err) { + if (ret.status) { + promise.resolve(); + } + else { + self.onerror(new Error(err.msg)); + promise.reject(err.msg); + self.destroy(); + } + }); + }); + return promise; + } }, + destroy: { value: function() { + var self = this; + this.connected = false; + this.socketId.then(function(socketId) { + socketManager.closeSocket({ + sid: socketId + }, + function(ret, err) { + if (!ret.status) { + self.onerror(new Error(err.msg)); + } + }); + delete socketPool[socketId]; + //self.onclose(); + }); + } }, + ref: { value: noop }, + unref: { value: noop }, + clearTimeout: { value: function() { + if (this.timeid !== undefined) { + global.clearTimeout(this.timeid); + } + } }, + setTimeout: { value: function(timeout, fn) { + this.clearTimeout(); + this.timeid = global.setTimeout(fn, timeout); + } } + }); + + global.hprose.APICloudTcpSocket = APICloudTcpSocket; + +})(this); diff --git a/src/Base64.js b/src/Base64.js new file mode 100644 index 0000000..113c68f --- /dev/null +++ b/src/Base64.js @@ -0,0 +1,134 @@ +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * Base64.js * + * * + * Base64 for HTML5. * + * * + * LastModified: Feb 29, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + if (typeof(global.btoa) === "undefined") { + global.btoa = function() { + var base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + return function(str) { + var buf, i, j, len, r, l, c; + i = j = 0; + len = str.length; + r = len % 3; + len = len - r; + l = (len / 3) << 2; + if (r > 0) { + l += 4; + } + buf = new Array(l); + + while (i < len) { + c = str.charCodeAt(i++) << 16 | + str.charCodeAt(i++) << 8 | + str.charCodeAt(i++); + buf[j++] = base64EncodeChars[c >> 18] + + base64EncodeChars[c >> 12 & 0x3f] + + base64EncodeChars[c >> 6 & 0x3f] + + base64EncodeChars[c & 0x3f] ; + } + if (r === 1) { + c = str.charCodeAt(i++); + buf[j++] = base64EncodeChars[c >> 2] + + base64EncodeChars[(c & 0x03) << 4] + + "=="; + } + else if (r === 2) { + c = str.charCodeAt(i++) << 8 | + str.charCodeAt(i++); + buf[j++] = base64EncodeChars[c >> 10] + + base64EncodeChars[c >> 4 & 0x3f] + + base64EncodeChars[(c & 0x0f) << 2] + + "="; + } + return buf.join(''); + }; + }(); + } + + if (typeof(global.atob) === "undefined") { + global.atob = function() { + var base64DecodeChars = [ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, + -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 + ]; + return function(str) { + var c1, c2, c3, c4; + var i, j, len, r, l, out; + + len = str.length; + if (len % 4 !== 0) { + return ''; + } + if (/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\+\/\=]/.test(str)) { + return ''; + } + if (str.charAt(len - 2) === '=') { + r = 1; + } + else if (str.charAt(len - 1) === '=') { + r = 2; + } + else { + r = 0; + } + l = len; + if (r > 0) { + l -= 4; + } + l = (l >> 2) * 3 + r; + out = new Array(l); + + i = j = 0; + while (i < len) { + // c1 + c1 = base64DecodeChars[str.charCodeAt(i++)]; + if (c1 === -1) break; + + // c2 + c2 = base64DecodeChars[str.charCodeAt(i++)]; + if (c2 === -1) break; + + out[j++] = String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); + + // c3 + c3 = base64DecodeChars[str.charCodeAt(i++)]; + if (c3 === -1) break; + + out[j++] = String.fromCharCode(((c2 & 0x0f) << 4) | ((c3 & 0x3c) >> 2)); + + // c4 + c4 = base64DecodeChars[str.charCodeAt(i++)]; + if (c4 === -1) break; + + out[j++] = String.fromCharCode(((c3 & 0x03) << 6) | c4); + } + return out.join(''); + }; + }(); + } + +})(this); diff --git a/src/BytesIO.js b/src/BytesIO.js index 6ae9177..58da533 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -13,7 +13,7 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -21,15 +21,7 @@ (function (global, undefined) { 'use strict'; - var arrayLikeObjectArgumentsEnabled = true; - - try { - String.fromCharCode.apply(String, new Uint8Array([1, 2])); - } - catch (e) { - arrayLikeObjectArgumentsEnabled = false; - Object.defineProperty(Array.prototype, 'subarray', { value: Array.prototype.slice }); - } + var toBinaryString = global.hprose.toBinaryString; var _EMPTY_BYTES = new Uint8Array(0); var _INIT_SIZE = 1024; @@ -288,15 +280,6 @@ return [bytes.subarray(0, off), off]; } - function toArray(bytes) { - var n = bytes.length; - var a = new Array(bytes.length); - for (var i = 0; i < n; ++i) { - a[i] = bytes[i]; - } - return a; - } - function pow2roundup(x) { --x; x |= x >> 1; @@ -583,21 +566,7 @@ n = this._length - this._off; } if (n === 0) return ''; - var bytes = this._bytes.subarray(this._off, this._off += n); - var charCodes = (arrayLikeObjectArgumentsEnabled ? bytes : toArray(bytes)); - if (n < 100000) { - return String.fromCharCode.apply(String, charCodes); - } - var remain = n & 0xFFFF; - var count = n >> 16; - var a = new Array(remain ? count + 1 : count); - for (var i = 0; i < count; ++i) { - a[i] = String.fromCharCode.apply(String, charCodes.subarray(i << 16, (i + 1) << 16)); - } - if (remain) { - a[count] = String.fromCharCode.apply(String, charCodes.subarray(count << 16, n)); - } - return a.join(''); + return toBinaryString(this._bytes.subarray(this._off, this._off += n)); } }, // n is the UTF16 length readStringAsBytes: { value: function(n) { diff --git a/src/ChromeTcpSocket.js b/src/ChromeTcpSocket.js new file mode 100644 index 0000000..41cdece --- /dev/null +++ b/src/ChromeTcpSocket.js @@ -0,0 +1,186 @@ +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * ChromeTcpSocket.js * + * * + * chrome tcp socket for JavaScript. * + * * + * LastModified: Mar 1, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Future = global.hprose.Future; + var createObject = global.hprose.createObject; + var defineProperties = global.hprose.defineProperties; + var toUint8Array = global.hprose.toUint8Array; + var toBinaryString = global.hprose.toBinaryString; + + function noop(){} + + var socketPool = {}; + var socketManager = null; + + function receiveListener(info) { + var socket = socketPool[info.socketId]; + socket.onreceive(toBinaryString(info.data)); + } + + function receiveErrorListener(info) { + var socket = socketPool[info.socketId]; + socket.onerror(info.resultCode); + socket.destroy(); + } + + function ChromeTcpSocket() { + if (socketManager === null) { + socketManager = chrome.sockets.tcp; + socketManager.onReceive.addListener(receiveListener); + socketManager.onReceiveError.addListener(receiveErrorListener); + } + this.socketId = new Future(); + this.connected = false; + this.timeid = undefined; + this.onclose = noop; + this.onconnect = noop; + this.onreceive = noop; + this.onerror = noop; + } + + defineProperties(ChromeTcpSocket.prototype, { + connect: { value: function(address, port, options) { + var self = this; + socketManager.create({ persistent: options && options.persistent }, function(createInfo) { + if (options) { + if ('noDelay' in options) { + socketManager.setNoDelay(createInfo.socketId, options.noDelay, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + }); + } + if ('keepAlive' in options) { + socketManager.setKeepAlive(createInfo.socketId, options.keepAlive, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + }); + } + } + if (options && options.tls) { + socketManager.setPaused(createInfo.socketId, true, function() { + socketManager.connect(createInfo.socketId, address, port, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + else { + socketManager.secure(createInfo.socketId, function(secureResult) { + if (secureResult !== 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + else { + socketManager.setPaused(createInfo.socketId, false, function() { + self.socketId.resolve(createInfo.socketId); + }); + } + }); + } + }); + }); + } + else { + socketManager.connect(createInfo.socketId, address, port, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + else { + self.socketId.resolve(createInfo.socketId); + } + }); + } + }); + this.socketId.then(function(socketId) { + socketPool[socketId] = self; + self.connected = true; + self.onconnect(socketId); + }, function(reason) { + self.onerror(reason); + }); + } }, + send: { value: function(data) { + data = toUint8Array(data).buffer; + var self = this; + var promise = new Future(); + this.socketId.then(function(socketId) { + socketManager.send(socketId, data, function(sendInfo) { + if (sendInfo.resultCode < 0) { + self.onerror(sendInfo.resultCode); + promise.reject(sendInfo.resultCode); + self.destroy(); + } + else { + promise.resolve(sendInfo.bytesSent); + } + }); + }); + return promise; + } }, + destroy: { value: function() { + var self = this; + this.connected = false; + this.socketId.then(function(socketId) { + socketManager.disconnect(socketId); + socketManager.close(socketId); + delete socketPool[socketId]; + self.onclose(); + }); + } }, + ref: { value: function() { + this.socketId.then(function(socketId) { + socketManager.setPaused(socketId, false); + }); + } }, + unref: { value: function() { + this.socketId.then(function(socketId) { + socketManager.setPaused(socketId, true); + }); + } }, + clearTimeout: { value: function() { + if (this.timeid !== undefined) { + global.clearTimeout(this.timeid); + } + } }, + setTimeout: { value: function(timeout, fn) { + this.clearTimeout(); + this.timeid = global.setTimeout(fn, timeout); + } } + }); + + global.hprose.ChromeTcpSocket = ChromeTcpSocket; + +})(this); diff --git a/src/Client.js b/src/Client.js index 76b2b23..6556dca 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -27,7 +27,6 @@ var Writer = global.hprose.Writer; var Reader = global.hprose.Reader; var Future = global.hprose.Future; - var slice = Function.prototype.call.bind(Array.prototype.slice); var GETFUNCTIONS = new Uint8Array(1); GETFUNCTIONS[0] = Tags.TagEnd; @@ -174,7 +173,7 @@ function setFunction(stub, name) { return function() { if (_batch) { - return _invoke(stub, name, slice(arguments), true); + return _invoke(stub, name, Array.slice(arguments), true); } else { return Future.all(arguments).then(function(args) { @@ -747,6 +746,9 @@ _filters.splice(i, 1); return true; } + function filters() { + return _filters; + } function useService(uri, functions, create) { if (create === undefined) { if (typeof(functions) === s_boolean) { @@ -1077,6 +1079,7 @@ filter: { get: getFilter, set: setFilter }, addFilter: { value: addFilter }, removeFilter: { value: removeFilter }, + filters: { get: filters }, useService: { value: useService }, invoke: { value: invoke }, ready: { value: ready }, diff --git a/src/Future.js b/src/Future.js index 2b417f5..ba5b799 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Feb 25, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -29,8 +29,6 @@ var setImmediate = global.setImmediate; var setTimeout = global.setTimeout; var clearTimeout = global.clearTimeout; - var foreach = Function.prototype.call.bind(Array.prototype.forEach); - var slice = Function.prototype.call.bind(Array.prototype.slice); function Future(computation) { Object.defineProperties(this, { @@ -105,7 +103,7 @@ function arraysize(array) { var size = 0; - foreach(array, function() { ++size; }); + Array.forEach(array, function() { ++size; }); return size; } @@ -117,7 +115,7 @@ var result = new Array(n); if (count === 0) return value(result); var future = new Future(); - foreach(array, function(element, index) { + Array.forEach(array, function(element, index) { var f = (isPromise(element) ? element : value(element)); f.then(function(value) { result[index] = value; @@ -139,7 +137,7 @@ array = isPromise(array) ? array : value(array); return array.then(function(array) { var future = new Future(); - foreach(array, function(element) { + Array.forEach(array, function(element) { var f = (isPromise(element) ? element : value(element)); f.then(future.resolve, future.reject); }); @@ -157,7 +155,7 @@ } var reasons = new Array(n); var future = new Future(); - foreach(array, function(element, index) { + Array.forEach(array, function(element, index) { var f = (isPromise(element) ? element : value(element)); f.then(future.resolve, function(e) { reasons[index] = e; @@ -178,7 +176,7 @@ var result = new Array(n); if (count === 0) return value(result); var future = new Future(); - foreach(array, function(element, index) { + Array.forEach(array, function(element, index) { var f = (isPromise(element) ? element : value(element)); f.whenComplete(function() { result[index] = f.inspect(); @@ -192,14 +190,14 @@ } function attempt(handler/*, arg1, arg2, ... */) { - var args = slice(arguments, 1); + var args = Array.slice(arguments, 1); return all(args).then(function(args) { return handler.apply(undefined, args); }); } function run(handler, thisArg/*, arg1, arg2, ... */) { - var args = slice(arguments, 2); + var args = Array.slice(arguments, 2); return all(args).then(function(args) { return handler.apply(thisArg, args); }); @@ -275,6 +273,51 @@ }); } + function indexOf(array, searchElement, fromIndex) { + return all(array).then(function(array) { + if (!isPromise(searchElement)) { + searchElement = value(searchElement); + } + return searchElement.then(function(searchElement) { + return array.indexOf(searchElement, fromIndex); + }); + }); + } + + function lastIndexOf(array, searchElement, fromIndex) { + return all(array).then(function(array) { + if (!isPromise(searchElement)) { + searchElement = value(searchElement); + } + return searchElement.then(function(searchElement) { + return array.lastIndexOf(searchElement, fromIndex); + }); + }); + } + + function includes(array, searchElement, fromIndex) { + return all(array).then(function(array) { + if (!isPromise(searchElement)) { + searchElement = value(searchElement); + } + return searchElement.then(function(searchElement) { + return array.includes(searchElement, fromIndex); + }); + }); + } + + function find(array, predicate, thisArg) { + return all(array).then(function(array) { + return array.find(predicate, thisArg); + }); + } + + function findIndex(array, predicate, thisArg) { + return all(array).then(function(array) { + return array.findIndex(predicate, thisArg); + }); + } + Object.defineProperties(Future, { // port from Dart delayed: { value: delayed }, @@ -303,7 +346,12 @@ filter: { value: filter }, map: { value: map }, reduce: { value: reduce }, - reduceRight: { value: reduceRight } + reduceRight: { value: reduceRight }, + indexOf: { value: indexOf }, + lastIndexOf: { value: lastIndexOf }, + includes: { value: includes }, + find: { value: find }, + findIndex: { value: findIndex } }); function _call(callback, next, x) { @@ -546,7 +594,7 @@ }); } }, call: { value: function(method) { - var args = slice(arguments, 1); + var args = Array.slice(arguments, 1); return this.then(function(result) { return all(args).then(function(args) { return result[method].apply(result, args); @@ -554,7 +602,7 @@ }); } }, bind: { value: function(method) { - var bindargs = slice(arguments); + var bindargs = Array.slice(arguments); if (Array.isArray(method)) { for (var i = 0, n = method.length; i < n; ++i) { bindargs[0] = method[i]; @@ -565,7 +613,7 @@ bindargs.shift(); var self = this; Object.defineProperty(this, method, { value: function() { - var args = slice(arguments); + var args = Array.slice(arguments); return self.then(function(result) { return all(bindargs.concat(args)).then(function(args) { return result[method].apply(result, args); @@ -600,6 +648,21 @@ return reduceRight(this, callback, initialValue); } return reduceRight(this, callback); + } }, + indexOf: { value: function(searchElement, fromIndex) { + return indexOf(this, searchElement, fromIndex); + } }, + lastIndexOf: { value: function(searchElement, fromIndex) { + return lastIndexOf(this, searchElement, fromIndex); + } }, + includes: { value: function(searchElement, fromIndex) { + return includes(this, searchElement, fromIndex); + } }, + find: { value: function(predicate, thisArg) { + return find(this, predicate, thisArg); + } }, + findIndex: { value: function(predicate, thisArg) { + return findIndex(this, predicate, thisArg); } } }); diff --git a/src/Helper.js b/src/Helper.js new file mode 100644 index 0000000..fb0ad72 --- /dev/null +++ b/src/Helper.js @@ -0,0 +1,87 @@ +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Helper.js * + * * + * hprose helper for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + function generic(method) { + if (typeof method !== "function") { + throw new TypeError(method + " is not a function"); + } + return function(context) { + return method.apply(context, Array.prototype.slice.call(arguments, 1)); + }; + } + + var arrayLikeObjectArgumentsEnabled = true; + + try { + String.fromCharCode.apply(String, new Uint8Array([1])); + } + catch (e) { + arrayLikeObjectArgumentsEnabled = false; + } + + function toArray(arrayLikeObject) { + var n = arrayLikeObject.length; + var a = new Array(n); + for (var i = 0; i < n; ++i) { + a[i] = arrayLikeObject[i]; + } + return a; + } + + var getCharCodes = arrayLikeObjectArgumentsEnabled ? function(bytes) { return bytes; } : toArray; + + function toBinaryString(bytes) { + if (bytes instanceof ArrayBuffer) { + bytes = new Uint8Array(bytes); + } + var n = bytes.length; + if (n < 100000) { + return String.fromCharCode.apply(String, getCharCodes(bytes)); + } + var remain = n & 0xFFFF; + var count = n >> 16; + var a = new Array(remain ? count + 1 : count); + for (var i = 0; i < count; ++i) { + a[i] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(i << 16, (i + 1) << 16))); + } + if (remain) { + a[count] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(count << 16, n))); + } + return a.join(''); + } + + function toUint8Array(bs) { + var n = bs.length; + var data = new Uint8Array(n); + for (var i = 0; i < n; i++) { + data[i] = bs.charCodeAt(i) & 0xFF; + } + return data; + } + + global.hprose.generic = generic; + global.hprose.toBinaryString = toBinaryString; + global.hprose.toUint8Array = toUint8Array; + global.hprose.toArray = toArray; + +})(this); diff --git a/src/HttpClient.js b/src/HttpClient.js index c83d82a..bdcc06c 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -22,7 +22,7 @@ var Client = global.hprose.Client; var Future = global.hprose.Future; - + var BytesIO = global.hprose.BytesIO; function noop(){} function HttpClient(uri, functions, settings) { @@ -34,7 +34,8 @@ var self = this; - function send(request, future) { + function xhrPost(request, env) { + var future = new Future(); var xhr = new XMLHttpRequest(); xhr.open('POST', self.uri, true); if (global.location !== undefined && global.location.protocol !== 'file:') { @@ -62,6 +63,17 @@ xhr.upload.onprogress = _onreqprogress; } xhr.onprogress = _onresprogress; + if (env.timeout > 0) { + future = future.timeout(env.timeout).catchError(function(e) { + xhr.onload = noop; + xhr.onerror = noop; + xhr.abort(); + throw e; + }, + function(e) { + return e instanceof TimeoutError; + }); + } if (request.constructor === String || ArrayBuffer.isView) { xhr.send(request); } @@ -73,26 +85,39 @@ buf.set(request); xhr.send(buf.buffer); } - return xhr; + return future; } - function sendAndReceive(request, env) { + function apiPost(request, env) { var future = new Future(); - var xhr = send(request, future); - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { - xhr.onload = noop; - xhr.onerror = noop; - xhr.abort(); - throw e; - }, - function(e) { - return e instanceof TimeoutError; - }); - } + api.ajax({ + url: self.uri(), + method: 'post', + data: { body: BytesIO.toString(request) }, + timeout: env.timeout, + dataType: 'text', + headers: _header, + certificate: self.certificate + }, function(ret, err) { + if (ret) { + future.resolve((new BytesIO(ret)).takeBytes()); + } + else { + future.reject(new Error(err.msg)); + } + }); + return future; + } + + function sendAndReceive(request, env) { + var apicloud = (typeof(global.api) !== "undefined" && + typeof(global.api.ajax) !== "undefined"); + var future = apicloud ? apiPost(request, env) : + xhrPost(request, env); if (env.oneway) future.resolve(); return future; } + function setOnRequestProgress(value) { if (typeof(value) === 'function') { _onreqprogress = value; diff --git a/src/Polyfill.js b/src/Polyfill.js new file mode 100644 index 0000000..41f20f9 --- /dev/null +++ b/src/Polyfill.js @@ -0,0 +1,415 @@ +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Polyfill.js * + * * + * Polyfill for JavaScript. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + /* Function */ + if (!Function.prototype.bind) { + Object.defineProperty(Function.prototype, 'bind', { value: function(oThis) { + if (typeof this !== 'function') { + throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + var aArgs = Array.prototype.slice.call(arguments, 1), + toBind = this, + NOP = function() {}, + bound = function() { + return toBind.apply(this instanceof NOP ? this : oThis, + aArgs.concat(Array.prototype.slice.call(arguments))); + }; + if (this.prototype) { + NOP.prototype = this.prototype; + } + bound.prototype = new NOP(); + return bound; + } }); + } + /* Array */ + if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, 'includes', { value: function(searchElement /*, fromIndex*/ ) { + var O = Object(this); + var len = parseInt(O.length) || 0; + if (len === 0) { + return false; + } + var n = parseInt(arguments[1]) || 0; + var k; + if (n >= 0) { + k = n; + } + else { + k = len + n; + if (k < 0) k = 0; + } + var currentElement; + while (k < len) { + currentElement = O[k]; + if (searchElement === currentElement || + (searchElement !== searchElement && currentElement !== currentElement)) { // NaN !== NaN + return true; + } + k++; + } + return false; + } }); + } + if (!Array.prototype.find) { + Object.defineProperty(Array.prototype, 'find', { value: function(predicate) { + if (this === null || this === undefined) { + throw new TypeError('Array.prototype.find called on null or undefined'); + } + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + var list = Object(this); + var length = list.length >>> 0; + var thisArg = arguments[1]; + var value; + for (var i = 0; i < length; i++) { + value = list[i]; + if (predicate.call(thisArg, value, i, list)) { + return value; + } + } + return undefined; + } }); + } + if (!Array.prototype.findIndex) { + Object.defineProperty(Array.prototype, 'findIndex', { value: function(predicate) { + if (this === null || this === undefined) { + throw new TypeError('Array.prototype.findIndex called on null or undefined'); + } + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + var list = Object(this); + var length = list.length >>> 0; + var thisArg = arguments[1]; + var value; + + for (var i = 0; i < length; i++) { + value = list[i]; + if (predicate.call(thisArg, value, i, list)) { + return i; + } + } + return -1; + } }); + } + if (!Array.prototype.fill) { + Object.defineProperty(Array.prototype, 'fill', { value: function(value) { + if (this === null || this === undefined) { + throw new TypeError('this is null or not defined'); + } + var O = Object(this); + var len = O.length >>> 0; + var start = arguments[1]; + var relativeStart = start >> 0; + var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + + while (k < final) { + O[k] = value; + k++; + } + return O; + } }); + } + if (!Array.prototype.copyWithin) { + Object.defineProperty(Array.prototype, 'copyWithin', { value: function(target, start/*, end*/) { + if (this === null || this === undefined) { + throw new TypeError('this is null or not defined'); + } + var O = Object(this); + var len = O.length >>> 0; + var relativeTarget = target >> 0; + var to = relativeTarget < 0 ? Math.max(len + relativeTarget, 0) : Math.min(relativeTarget, len); + var relativeStart = start >> 0; + var from = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + var count = Math.min(final - from, len - to); + var direction = 1; + if (from < to && to < (from + count)) { + direction = -1; + from += count - 1; + to += count - 1; + } + while (count > 0) { + if (from in O) { + O[to] = O[from]; + } + else { + delete O[to]; + } + from += direction; + to += direction; + count--; + } + return O; + } }); + } + if (!Array.from) { + Object.defineProperty(Array, 'from', { value: (function() { + var toStr = Object.prototype.toString; + var isCallable = function(fn) { + return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; + }; + var toInteger = function(value) { + var number = Number(value); + if (isNaN(number)) { return 0; } + if (number === 0 || !isFinite(number)) { return number; } + return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); + }; + var maxSafeInteger = Math.pow(2, 53) - 1; + var toLength = function(value) { + var len = toInteger(value); + return Math.min(Math.max(len, 0), maxSafeInteger); + }; + + return function(arrayLike/*, mapFn, thisArg */) { + var C = this; + var items = Object(arrayLike); + if (arrayLike === null || arrayLike === undefined) { + throw new TypeError("Array.from requires an array-like object - not null or undefined"); + } + var mapFn = arguments.length > 1 ? arguments[1] : void undefined; + var T; + if (typeof mapFn !== 'undefined') { + if (!isCallable(mapFn)) { + throw new TypeError('Array.from: when provided, the second argument must be a function'); + } + if (arguments.length > 2) { + T = arguments[2]; + } + } + var len = toLength(items.length); + var A = isCallable(C) ? Object(new C(len)) : new Array(len); + var k = 0; + var kValue; + while (k < len) { + kValue = items[k]; + if (mapFn) { + A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); + } + else { + A[k] = kValue; + } + k += 1; + } + A.length = len; + return A; + }; + }()) }); + } + if (!Array.of) { + Object.defineProperty(Array, 'of', { value: function() { + return Array.prototype.slice.call(arguments); + } }); + } + /* String */ + if (!String.prototype.startsWith) { + Object.defineProperty(String.prototype, 'startsWith', { value: function(searchString, position){ + position = position || 0; + return this.substr(position, searchString.length) === searchString; + } }); + } + if (!String.prototype.endsWith) { + Object.defineProperty(String.prototype, 'endsWith', { value: function(searchString, position) { + var subjectString = this.toString(); + if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + } }); + } + if (!String.prototype.includes) { + Object.defineProperty(String.prototype, 'includes', { value: function() { + if (typeof arguments[1] === "number") { + if (this.length < arguments[0].length + arguments[1].length) { + return false; + } + else { + return this.substr(arguments[1], arguments[0].length) === arguments[0]; + } + } + else { + return String.prototype.indexOf.apply(this, arguments) !== -1; + } + } }); + } + if (!String.prototype.repeat) { + Object.defineProperty(String.prototype, 'repeat', { value: function(count) { + var str = this.toString(); + count = +count; + if (count !== count) { + count = 0; + } + if (count < 0) { + throw new RangeError('repeat count must be non-negative'); + } + if (count === Infinity) { + throw new RangeError('repeat count must be less than infinity'); + } + count = Math.floor(count); + if (str.length === 0 || count === 0) { + return ''; + } + // Ensuring count is a 31-bit integer allows us to heavily optimize the + // main part. But anyway, most current (August 2014) browsers can't handle + // strings 1 << 28 chars or longer, so: + if (str.length * count >= 1 << 28) { + throw new RangeError('repeat count must not overflow maximum string size'); + } + var rpt = ''; + for (;;) { + if ((count & 1) === 1) { + rpt += str; + } + count >>>= 1; + if (count === 0) { + break; + } + str += str; + } + // Could we try: + // return Array(count + 1).join(this); + return rpt; + } }); + } + if (!String.prototype.trim) { + Object.defineProperty(String.prototype, 'trim', { value: function() { + return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, ''); + } }); + } + if (!String.prototype.trimLeft) { + Object.defineProperty(String.prototype, 'trimLeft', { value: function() { + return this.toString().replace(/^[\s\xa0]+/, ''); + } }); + } + if (!String.prototype.trimRight) { + Object.defineProperty(String.prototype, 'trimRight', { value: function() { + return this.toString().replace(/[\s\xa0]+$/, ''); + } }); + } + /* Object */ + if (!Object.keys) { + Object.defineProperty(Object, 'keys', { value: (function () { + var hasOwnProperty = Object.prototype.hasOwnProperty, + hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), + dontEnums = [ + 'toString', + 'toLocaleString', + 'valueOf', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'constructor' + ], + dontEnumsLength = dontEnums.length; + return function (obj) { + if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) { + throw new TypeError('Object.keys called on non-object'); + } + var result = []; + for (var prop in obj) { + if (hasOwnProperty.call(obj, prop)) { + result.push(prop); + } + } + if (hasDontEnumBug) { + for (var i=0; i < dontEnumsLength; i++) { + if (hasOwnProperty.call(obj, dontEnums[i])) { + result.push(dontEnums[i]); + } + } + } + return result; + }; + })() }); + } + /* Generic methods */ + var generic = global.hprose.generic; + + function genericMethods(obj, properties) { + var proto = obj.prototype; + for (var i = 0, len = properties.length; i < len; i++) { + var property = properties[i]; + var method = proto[property]; + if (typeof method === 'function' && typeof obj[property] === 'undefined') { + Object.defineProperty(obj, 'property', { value: generic(method) }); + } + } + } + genericMethods(Array, [ + "pop", + "push", + "reverse", + "shift", + "sort", + "splice", + "unshift", + "concat", + "join", + "slice", + "indexOf", + "lastIndexOf", + "filter", + "forEach", + "every", + "map", + "some", + "reduce", + "reduceRight", + "includes", + "find", + "findIndex" + ]); + genericMethods(String, [ + 'quote', + 'substring', + 'toLowerCase', + 'toUpperCase', + 'charAt', + 'charCodeAt', + 'indexOf', + 'lastIndexOf', + 'include', + 'startsWith', + 'endsWith', + 'repeat', + 'trim', + 'trimLeft', + 'trimRight', + 'toLocaleLowerCase', + 'toLocaleUpperCase', + 'match', + 'search', + 'replace', + 'split', + 'substr', + 'concat', + 'slice' + ]); +})(this); From 1cd131ab58b6bacbf7434c5ffe41b66d631a185c Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 2 Mar 2016 19:33:50 +0800 Subject: [PATCH 20/86] Added .jshintrc --- .jshintrc | 25 ++++ dist/hprose-html5.js | 6 +- dist/hprose-html5.min.js | 2 +- src/APICloudTcpSocket.js | 12 +- src/Base64.js | 18 +-- src/BytesIO.js | 20 +-- src/ChromeTcpSocket.js | 13 +- src/Client.js | 33 +++-- src/Future.js | 15 ++- src/HarmonyMaps.js | 22 ++-- src/HttpClient.js | 10 +- src/JSONRPCClientFilter.js | 5 +- src/Loader.js | 3 +- src/Reader.js | 14 +- src/TcpClient.js | 262 ++++++++++--------------------------- src/WebSocketClient.js | 16 ++- src/Writer.js | 84 ++++++++---- src/setImmediate.js | 4 +- 18 files changed, 254 insertions(+), 310 deletions(-) create mode 100644 .jshintrc diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..fd01957 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,25 @@ +{ + "sub":true, + "laxbreak":true, + "laxcomma":true, + "regexp":true, + "asi": true, + "browser": true, + "loopfunc":true, + "expr":true, + "es3": true, + "esnext": true, + "curly": true, + "immed": true, + "latedef": false, + "expr": true, + "eqeqeq": false, + "eqnull": false, + "newcap": true, + "noarg": true, + "undef": true, + "unused": true, + "proto": true, + "strict": false, + "smarttabs": true +} diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 4c9c5d4..8f426fe 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,s=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(s(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var o=arguments[0],u=0,c=o.length;c>u;u++)n.set(o[u][0],o[u][1]);return n}),!r){var o=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(s(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:o(),"function":o(),unknown:o(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,s=i.length;s>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var s=e.document,o=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=s.createTextNode(""),r=new o(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=s.createElement("iframe");e.style.display="none",s.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=s.documentElement;return function(){var t=a(arguments),r=s.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?s&&"onreadystatechange"in s.createElement("script")?l.setImmediate=u.readyStateChange():s&&o?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():s&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&M(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||U&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return N(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function o(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return o(t)}catch(r){return s(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return P(e,function(){++t}),t}function l(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(function(e){a[t]=e,0===--n&&s.resolve(a)},s.reject)}),s})}function h(){return l(arguments)}function g(e){return e=i(e)?e:o(e),e.then(function(e){var t=new r;return P(e,function(e){var r=i(e)?e:o(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.then(s.resolve,function(e){a[t]=e,0===--n&&s.reject(a)})}),s})}function p(e){return e=i(e)?e:o(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return o(a);var s=new r;return P(e,function(e,t){var r=i(e)?e:o(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&s.resolve(a)})}),s})}function d(e){var r=x(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function y(e,t){var r=x(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function k(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=o(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){M(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function j(e,t,r){e?E(e,t,r):t.reject(r)}function O(e,t,r,n,a){function s(i){O(e,t,r,n,i)}function o(e){j(t,n,e)}if(i(a))return a===r?void o(new TypeError("Self resolution")):void a.then(s,o);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void o(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,s(e))},function(e){f&&(f=!1,o(e))})}catch(c){f&&(f=!1,o(c))}return}}e?E(e,n,a):n.resolve(a)}function A(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==C}}})}var C=0,I=1,R=2,U="Promise"in e,M=e.setImmediate,N=e.setTimeout,F=e.clearTimeout,P=Function.prototype.call.bind(Array.prototype.forEach),x=Function.prototype.call.bind(Array.prototype.slice);Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:u},value:{value:o},all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:d},run:{value:y},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:k},reduceRight:{value:S}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:C,writable:!0},resolve:{value:function(e){if(this._state===C){this._state=I,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();O(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===C){this._state=R,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?E(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===I?e?O(e,t,this,n,this._value):n.resolve(this._value):this._state===R?t?E(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case C:return{state:"pending"};case I:return{state:"fulfilled",value:this._value};case R:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:o(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:o(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=N(function(){n.reject(t||new TimeoutError("timeout"))},e);return this.whenComplete(function(){F(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){N(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=x(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=x(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=x(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?k(this,e,t):k(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}}}),e.hprose.Future=r,e.hprose.Completer=A,e.hprose.resolved=o,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},U||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:o},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var s=r.charCodeAt(i+1);if(56320>a&&s>=56320&&57343>=s){var o=((1023&a)<<10|1023&s)+65536;e[t++]=240|o>>18,e[t++]=128|o>>12&63,e[t++]=128|o>>6&63,e[t++]=128|63&o,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=s;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&s)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&s)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));r[n++]=o>>10&1023|55296,r[n]=1023&o|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function s(e,t){for(var r=[],n=new Array(65535),i=0,a=0,s=e.length;t>i&&s>a;i++){var o=e[a++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=o;break;case 12:case 13:if(!(s>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&o)<<6|63&e[a++];break;case 14:if(!(s>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&o)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(s>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&o)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function o(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):s(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var s=e[i++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}}return[e.subarray(0,i),i]}function c(e){for(var t=e.length,r=new Array(e.length),n=0;t>n;++n)r[n]=e[n];return r}function f(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function l(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case l:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function h(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case l:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return o(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var g=!0;try{String.fromCharCode.apply(String,new Uint8Array([1,2]))}catch(v){g=!1,Object.defineProperty(Array.prototype,"subarray",{value:Array.prototype.slice})}var p=new Uint8Array(0),d=1024,y=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(l.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=f(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,d),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case l:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=y(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=y(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=o(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=o(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){if(this._off+e>this._length&&(e=this._length-this._off),0===e)return"";var t=this._bytes.subarray(this._off,this._off+=e),r=g?t:c(t);if(1e5>e)return String.fromCharCode.apply(String,r);for(var n=65535&e,i=e>>16,a=new Array(n?i+1:i),s=0;i>s;++s)a[s]=String.fromCharCode.apply(String,r.subarray(s<<16,s+1<<16));return n&&(a[i]=String.fromCharCode.apply(String,r.subarray(i<<16,e))),a.join("")}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=o(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return o(this.bytes,this._length)[0]}},clone:{value:function(){return new l(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(l,"toString",{value:h}),e.hprose.BytesIO=l}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){s.set(e,t),a[t]=e}function r(e){return s.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),s=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=E.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&E.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?j:i(e)}})}function s(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void o(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case k:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function o(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),s=("00"+t.getUTCHours()).slice(-2),o=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),s=("00"+t.getHours()).slice(-2),o=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===s&&"00"===o&&"00"===u&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(s+o+u),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),s=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==s&&(r.writeByte(S.TagPoint),r.writeAsciiString(s)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.write(t),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagQuote),n>0&&r.writeString(t),r.writeByte(S.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;n.writeByte(S.TagList),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a]);n.writeByte(S.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;r.writeByte(S.TagMap),a>0&&r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var o=0;a>o;o++)s(e,n[o]),s(e,t[n[o]]);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0&&r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){s(e,r),s(e,t)}),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,o=r(t);if(o in e._classref)i=e._classref[o],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,o,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)s(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0&&n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a]);n.writeByte(S.TagClosebrace);var s=e._fieldsref.length;return e._classref[t]=s,e._fieldsref[s]=r,s}var B=e.Map,k=e.hprose.BytesIO,S=e.hprose.Tags,E=e.hprose.ClassManager,j=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){s(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){d(this,e,s)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,s)}},writeMap:{value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:s(e,t);break;case ee.TagDate:case ee.TagTime:o(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t), -i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return j(t);case ee.TagDate:return A(e);case ee.TagTime:return I(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return K(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return V(e);case ee.TagError:throw new Error(x(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function k(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return j(e);default:r(t)}}function j(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function O(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function A(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),s=r.readByte();if(s===ee.TagTime){var o=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;s=r.readByte(),s===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(n,i,a,o,u,c,f)):new Date(n,i,a,o,u,c,f)}else t=s===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return A(e);case ee.TagRef:return V(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),s=0,o=r.readByte();return o===ee.TagPoint&&(s=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,s)):new Date(1970,0,1,n,i,a,s),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return V(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return V(e);default:r(t)}}function N(e){return e.stream.readString(1)}function F(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function P(e){var t=F(e);return e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return N(e);case ee.TagString:return P(e);case ee.TagRef:return V(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return V(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return V(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r[a]=s}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return V(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),s=T(e);r.set(a,s)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return V(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=x(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function V(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return k(this.stream)}},readDouble:{value:function(){return E(this.stream)}},readBoolean:{value:function(){return O(this.stream)}},readDateWithoutTag:{value:function(){return A(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return P(this)}},readString:{value:function(){return x(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function T(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function _(e,t){return e=T(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function B(e,t){return rt.sendAndReceive(e,t)}function k(e,t,r,n){Ve(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&++Ce>=Ae.length&&(Ce=0,Oe=Ae[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){k(t,r,n,i)},a),!0}return!1}function E(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case o.TagError:r=new Error(i.readString());break;case o.TagFunctions:var s=i.readList();i.checkTag(o.TagEnd),A(e,s);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?qe.reject(r):qe.resolve(e)};k(v,t,r,qe.reject)}function j(e,t){return function(){return ze?N(e,t,g(arguments),!0):h.all(arguments).then(function(r){return N(e,t,r,!1)})}}function O(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===d||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var s=0;sn;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var s in a)s in i&&(i[s]=a[s])}for(var o=0,u=r.length;u>o&&typeof r[o]!==w;++o);if(o===u)return i;var c=r.splice(o,u-o);for(i.onsuccess=c[0],u=c.length,o=1;u>o;++o){var f=c[o];switch(typeof f){case w:i.onerror=f;break;case p:i.byref=f;break;case y:i.mode=f;break;case m:for(var l in f)l in i&&(i[l]=f[l])}}return i}function U(e,t,r){var n=new c;n.writeByte(o.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Pe?h.promise(function(i,a){xe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function N(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function F(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function P(e,t,r){var n=U(e,t,r);return n.writeByte(o.TagEnd),h.promise(function(e,i){k(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,s=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===o.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===o.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===o.TagError&&(s=new Error(h.readString()),g=f.readByte());g!==o.TagEnd&&(s=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){s=p}s?i(s):e(a)},i)})}function x(e){return function(){e&&(Pe=!1,s(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},xe),xe=[])}}function W(e,t,r){r.sync&&(Pe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(s){r.onerror&&r.onerror(e,s),i(s)}n(a)}catch(s){i(s)}},function(t){F(e,t,r,i)})});return n.whenComplete(x(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:Ue,retry:Me,idempotent:Ne,failswitch:Fe,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(U(t.name,t.args,t.context)),e},new c);return r.writeByte(o.TagEnd),h.promise(function(n,i){k(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,s=new c(r),f=new l(s,!1),h=s.readByte();try{for(;h!==o.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=u.Raw&&(g=new c),h===o.TagResult){if(p===u.Serialized?g=f.readRaw():p>=u.Raw?(g.writeByte(o.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=s.readByte(),h===o.TagArgument){if(p>=u.Raw)g.writeByte(o.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=s.readByte()}}else h===o.TagError&&(p>=u.Raw?(g.writeByte(o.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=s.readByte());if([o.TagEnd,o.TagResult,o.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=u.Raw?(p===u.RawWithEndTag&&g.writeByte(o.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(y){return void i(y)}n(e)},i)})}function H(){ze=!0}function q(e){if(e=e||{},ze=!1,Pe)return h.promise(function(t,r){xe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0!==t){var r=D(e);r.sync&&(Pe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)F(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&F(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(x(r.sync)),i}}function Q(){return Le}function G(e){typeof e===w&&(Le=e)}function Y(){return Oe}function J(){return Fe}function K(e){Fe=!!e}function V(){return Ue}function X(e){Ue="number"==typeof e?0|e:0}function $(){return Me}function Z(e){Me="number"==typeof e?0|e:0}function ee(){return Ne}function te(e){Ne=!!e}function re(e){Ye=!!e}function ne(){return Ye}function ie(){return Ie}function ae(e){Ie=!!e}function se(){return Re}function oe(e){Re=!!e}function ue(){return We}function ce(e){We=!!e}function fe(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function le(e){De.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function ge(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Oe?(e&&(Oe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),qe.resolve(i),i):(s(E,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==w&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==w&&t.push(r);for(var s=2;i>s;s++)t.push(arguments[s])}return N(rt,e,t,ze)}function de(e,t){return qe.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)throw new TypeError("callback must be a function.");r=n}if(typeof r===w)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==w)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=ye(e,r,!0);if(null===a){var s=function(){N(rt,e,[r,a.handler,s,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,o=i.length;o>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&s()}},callbacks:[n]},Qe[e][r]=a,s()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===w){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Qe[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return N(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(s){return h.error(s)}}},P)}function ke(e){Ze.push(e),Ke=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},z)}function Se(e){et.push(e),Ve=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ee(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},B)}function je(e){return Be(e),rt}var Oe,Ae=[],Ce=-1,Ie=!1,Re=!1,Ue=3e4,Me=10,Ne=!1,Fe=!1,Pe=!1,xe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=P,Ke=z,Ve=_,Xe=B,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:H},end:{value:q},use:{value:function(e){return ke(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:Q,set:G},uri:{get:Y},id:{get:be},failswitch:{get:J,set:K},timeout:{get:V,set:X},retry:{get:$,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:se,set:oe},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},useService:{value:ve},invoke:{value:pe},ready:{value:de},subscribe:{value:we},unsubscribe:{value:Te},use:{value:je},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===d?(Ae=[n],Ce=0,ve(n,i)):Array.isArray(n)&&(Ae=n,Ce=Math.floor(Math.random()*Ae.length),ve(Ae[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var s=e.setImmediate,o=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=Function.prototype.call.bind(Array.prototype.slice),v=new Uint8Array(1);v[0]=o.TagEnd;var p="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,u){function c(n,i){var a=new XMLHttpRequest;a.open("POST",m.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var s in d)a.setRequestHeader(s,d[s]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=y),a.onprogress=w,n.constructor===String||ArrayBuffer.isView)a.send(n);else if(n.buffer.slice)a.send(n.buffer.slice(0,n.length));else{var o=new Uint8Array(n.length);o.set(n),a.send(o.buffer)}return a}function f(e,t){var n=new o,i=c(e,n);return t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw i.onload=r,i.onerror=r,i.abort(),e},function(e){return e instanceof TimeoutError})),t.oneway&&n.resolve(),n}function l(e){"function"==typeof e&&(y=e)}function h(){return y}function g(e){"function"==typeof e&&(w=e)}function v(){return w}function p(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?d[e]=t:delete d[e])}if(this.constructor!==n)return new n(i,a,u);s.call(this,i,a,u);var d=Object.create(null),y=r,w=r,m=this;Object.defineProperties(this,{onprogress:{get:h,set:l},onRequestProgress:{get:h,set:l},onResponseProgress:{get:v,set:g},setHeader:{value:p},sendAndReceive:{value:f}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.Future;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(){this.socketId=new v,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}function i(e){e.socketId in y||(y[e.socketId]={bytes:new g,headerLength:4,dataLength:-1,id:null});var t=d[e.socketId],r=y[e.socketId],n=r.bytes,i=r.headerLength,a=r.dataLength,s=r.id;for(n.write(e.data);;){if(0>a&&n.length>=i&&(a=n.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,i=8)),8===i&&null===s&&n.length>=i&&(s=n.readInt32BE()),!(a>=0&&n.length-i>=a))break;t.onreceive(n.read(a),s),i=4,s=null,n.trunc(),a=-1}r.bytes=n,r.headerLength=i,r.dataLength=a,r.id=s}function a(e){var t=d[e.socketId];t.onerror(e.resultCode),t.destroy()}function s(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){s.call(this,e)}function u(e){s.call(this,e)}function c(e,t,r){function n(){return b}function s(e){b=!!e}function f(){return _}function l(e){_=!!e}function g(){return B}function d(e){"number"==typeof e?(B=0|e,1>B&&(B=10)):B=10}function y(){return k}function w(e){k="number"==typeof e?0|e:0}function m(e,t){var r=new v;return _?((null===S||S.uri!==T.uri)&&(S=new o(T)),S.sendAndReceive(e,r,t)):((null===E||E.uri!==T.uri)&&(E=new u(T)),E.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(p||(p=!0,chrome.sockets.tcp.onReceive.addListener(i),chrome.sockets.tcp.onReceiveError.addListener(a)),this.constructor!==c)return new c(e,t,r);h.call(this,e,t,r);var T=this,b=!0,_=!1,B=10,k=3e4,S=null,E=null;Object.defineProperties(this,{noDelay:{get:n,set:s},fullDuplex:{get:f,set:l},maxPoolSize:{get:g,set:d},poolTimeout:{get:y,set:w},sendAndReceive:{value:m}})}function f(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function l(e,t,r){if("string"==typeof e)f(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){f(e)})}return new c(e,t,r)}var h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=!1,d={},y={};Object.defineProperties(n.prototype,{connect:{value:function(e,t,r,n){var i=this;chrome.sockets.tcp.create({persistent:n&&n.persistent},function(a){n&&("noDelay"in n&&chrome.sockets.tcp.setNoDelay(a.socketId,n.noDelay,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())}),"keepAlive"in n&&chrome.sockets.tcp.setKeepAlive(a.socketId,n.keepAlive,function(e){0>e&&(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose())})),r?chrome.sockets.tcp.setPaused(a.socketId,!0,function(){chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.secure(a.socketId,function(t){0!==t?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):chrome.sockets.tcp.setPaused(a.socketId,!1,function(){i.socketId.resolve(a.socketId)})})})}):chrome.sockets.tcp.connect(a.socketId,e,t,function(e){0>e?(i.socketId.reject(e),chrome.sockets.tcp.disconnect(a.socketId),chrome.sockets.tcp.close(a.socketId),i.onclose()):i.socketId.resolve(a.socketId)})}),this.socketId.then(function(e){d[e]=i,i.connected=!0,i.onconnect(e)},function(e){i.onerror(e)})}},send:{value:function(e){var t=this,r=new v;return this.socketId.then(function(n){chrome.sockets.tcp.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){chrome.sockets.tcp.disconnect(t),chrome.sockets.tcp.close(t),delete d[t],delete y[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){chrome.sockets.tcp.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),Object.defineProperties(s.prototype,{create:{value:function(){var e=document.createElement("a");e.href=this.uri;var t=e.protocol;e.protocol="http:";var r,i=e.hostname,a=parseInt(e.port);if("tcp:"===t||"tcp4:"===t||"tcp6:"===t)r=!1;else{if("tcps:"!==t&&"tcp4s:"!==t&&"tcp6s:"!==t&&"tls:"!==t)throw new Error("Unsupported "+t+" protocol!");r=!0}var s=new n,o=this;return s.connect(i,a,r,{persistent:!0,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),s.onclose=function(){--o.size},++this.size,s}}}),o.prototype=Object.create(s.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var s=this,o=i.timeout;o>0&&(a.timeoutIds[n]=e.setTimeout(function(){s.clean(a,n),0===a.count&&s.recycle(a),r.reject(new TimeoutError("timeout"))},o)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(e){s.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,n,i){var a=this,s=n.timeout;s>0&&(i.timeoutId=e.setTimeout(function(){a.clean(i),a.recycle(i),r.reject(new TimeoutError("timeout"))},s)),i.onreceive=function(e){a.clean(i),a.sendNext(i),r.resolve(e)},i.onerror=function(e){a.clean(i),r.reject(e)};var o=t.length,u=new g(4+o);u.writeInt32BE(o),u.write(t),i.send(u.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizew?++w:w=0}function l(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?B.send(n):n.buffer.slice?B.send(n.buffer.slice(0,n.length)):B.send(n.buffer)}function h(e){_.resolve(e)}function g(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--m,i.resolve(r.read(r.length-4))),100>m&&b.length>0){++m;var a=b.shift();_.then(function(){l(a[0],a[1])})}0===m&&(k.keepAlive||y())}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),m=0,B=null}function p(){_=new u,B=new c(k.uri),B.binaryType="arraybuffer",B.onopen=h,B.onmessage=g,B.onerror=r,B.onclose=v}function d(e,t){(null===B||B.readyState===c.CLOSING||B.readyState===c.CLOSED)&&p();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){ -throw delete T[r],--m,e},function(e){return e instanceof TimeoutError})),100>m?(++m,_.then(function(){l(r,e)})):b.push([r,e]),t.oneway&&n.resolve(),n}function y(){null!==B&&(B.onopen=r,B.onmessage=r,B.onclose=r,B.close())}if("undefined"==typeof c)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var w=0,m=0,T=[],b=[],_=null,B=null,k=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:y}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var s=e.hprose.Client,o=e.hprose.BytesIO,u=e.hprose.Future,c=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,s=1;t.prototype.inputFilter=function(e,t){var a=n.toString(e);"{"===a.charAt(0)&&(a="["+a+"]");for(var s=JSON.parse(a),o=new n,u=new i(o,!0),c=0,f=s.length;f>c;++c){var l=s[c];l.error?(o.writeByte(r.TagError),u.writeString(l.error.message)):(o.writeByte(r.TagResult),u.serialize(l.result))}return o.writeByte(r.TagEnd),o.bytes},t.prototype.outputFilter=function(e,t){var i=[],o=new n(e),u=new a(o,!1,!1),c=o.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=o.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=o.readByte()),c===r.TagTrue&&(c=o.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,i.push(f)}while(c===r.TagCall);return i.length>1?JSON.stringify(i):JSON.stringify(i[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;t>n;++n)r[n]=e[n];return r}function i(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t=e.length;if(1e5>t)return String.fromCharCode.apply(String,o(e));for(var r=65535&t,n=t>>16,i=new Array(r?n+1:n),a=0;n>a;++a)i[a]=String.fromCharCode.apply(String,o(e.subarray(a<<16,a+1<<16)));return r&&(i[n]=String.fromCharCode.apply(String,o(e.subarray(n<<16,t)))),i.join("")}function a(e){for(var t=e.length,r=new Uint8Array(t),n=0;t>n;n++)r[n]=255&e.charCodeAt(n);return r}var u=!0;try{String.fromCharCode.apply(String,new Uint8Array([1]))}catch(s){u=!1}var o=u?function(e){return e}:n;e.hprose.generic=r,e.hprose.toBinaryString=i,e.hprose.toUint8Array=a,e.hprose.toArray=n}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,u=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(u(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],o=0,c=s.length;c>o;o++)n.set(s[o][0],s[o][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(u(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},o=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:o(),"null":o()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,u=i.length;u>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,u=i.length;u>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var u=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,o={},c=1,f={};o.mutationObserver=function(){var e=[],t=u.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},o.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},o.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},o.postMessage=function(){var e=u.createElement("iframe");e.style.display="none",u.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},o.readyStateChange=function(){var e=u.documentElement;return function(){var t=a(arguments),r=u.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},o.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?u&&"onreadystatechange"in u.createElement("script")?l.setImmediate=o.readyStateChange():u&&s?l.setImmediate=o.mutationObserver():e.MessageChannel?l.setImmediate=o.messageChannel():u&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=o.postMessage():l.setImmediate=o.setTimeout():l.setImmediate=o.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&W(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||P&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return L(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function u(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function o(e){try{var t=e();return s(t)}catch(r){return u(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return Array.forEach(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return s(a);var u=new r;return Array.forEach(e,function(e,t){var r=i(e)?e:s(e);r.then(function(e){a[t]=e,0===--n&&u.resolve(a)},u.reject)}),u})}function h(){return l(arguments)}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){var r=i(e)?e:s(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),u=new r;return Array.forEach(e,function(e,t){var r=i(e)?e:s(e);r.then(u.resolve,function(e){a[t]=e,0===--n&&u.reject(a)})}),u})}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return s(a);var u=new r;return Array.forEach(e,function(e,t){var r=i(e)?e:s(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&u.resolve(a)})}),u})}function y(e){var r=Array.slice(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function d(e,t){var r=Array.slice(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function E(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function O(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.lastIndexOf(t,r)})})}function j(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return l(e).then(function(e){return e.find(t,r)})}function k(e,t,r){return l(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){W(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function I(e,t,r){e?R(e,t,r):t.reject(r)}function U(e,t,r,n,a){function u(i){U(e,t,r,n,i)}function s(e){I(t,n,e)}if(i(a))return a===r?void s(new TypeError("Self resolution")):void a.then(u,s);if(null!==a&&"object"==typeof a||"function"==typeof a){var o;try{o=a.then}catch(c){return void s(c)}if("function"==typeof o){var f=!0;try{return void o.call(a,function(e){f&&(f=!1,u(e))},function(e){f&&(f=!1,s(e))})}catch(c){f&&(f=!1,s(c))}return}}e?R(e,n,a):n.resolve(a)}function M(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==x}}})}var x=0,N=1,F=2,P="Promise"in e,W=e.setImmediate,L=e.setTimeout,D=e.clearTimeout,z=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:u},sync:{value:o},value:{value:s},all:{value:l},race:{value:g},resolve:{value:s},reject:{value:u},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:y},run:{value:d},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:E},reduceRight:{value:S},indexOf:{value:O},lastIndexOf:{value:A},includes:{value:j},find:{value:C},findIndex:{value:k}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:x,writable:!0},resolve:{value:function(e){if(this._state===x){this._state=N,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();U(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===x){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?R(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===N?e?U(e,t,this,n,this._value):n.resolve(this._value):this._state===F?t?R(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case x:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:s(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:s(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=L(function(){n.reject(t||new z("timeout"))},e);return this.whenComplete(function(){D(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){L(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?E(this,e,t):E(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}},indexOf:{value:function(e,t){return O(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return j(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return k(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=M,e.hprose.resolved=s,e.hprose.rejected=u,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},P||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:s},reject:{value:u}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var u=r.charCodeAt(i+1);if(56320>a&&u>=56320&&57343>=u){var s=((1023&a)<<10|1023&u)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var u=e[i++];switch(u>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=u;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&u)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&u)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&u)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function u(e,t){for(var r=[],n=new Array(65535),i=0,a=0,u=e.length;t>i&&u>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(u>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(u>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(u>a+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));n[i++]=o>>10&1023|55296,n[i]=1023&o|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):u(e,r)}function o(e,r){if(r===t&&(r=e.length),0===r)return[g,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var u=e[i++];switch(u>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&u)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}}return[e.subarray(0,i),i]}function c(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,g=new Uint8Array(0),v=1024,p=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?g:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return g.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?g:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=p(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=p(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=o(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){u.set(e,t),a[t]=e}function r(e){return u.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),u=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=O.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&O.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function u(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void d(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function o(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),u=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),o=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(u+s+o),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),u=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===u&&"00"===s&&"00"===o&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(u+s+o),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(u+s+o),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),u=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==u&&(r.writeByte(S.TagPoint),r.writeAsciiString(u)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(S.TagOpenbrace);n.writeByte(S.TagClosebrace)}function d(e,t){e._refer.write(t)||y(e,t,o)}function w(e,t){e._refer.write(t)||y(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(S.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var s=0;a>s;s++)u(e,n[s]),u(e,t[n[s]])}else r.writeByte(S.TagOpenbrace);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var o in t)t.hasOwnProperty(o)&&"function"!=typeof t[o]&&(n[n.length]=o.toString());i=_(e,s,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)u(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a])}else n.writeByte(S.TagOpenbrace);n.writeByte(S.TagClosebrace);var u=e._fieldsref.length;return e._classref[t]=u,e._fieldsref[u]=r,u}var B=e.Map,E=e.hprose.BytesIO,S=e.hprose.Tags,O=e.hprose.ClassManager,A=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){u(this,e)}},writeInteger:{value:function(e){o(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){y(this,e,u)}},writeListWithRef:{value:function(e){this._refer.write(e)||y(this,e,u)}},writeMap:{ +value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:u(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:o(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function u(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function o(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function y(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=d(i,r,0,"."),null===t&&(t=d(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return C(e);case ee.TagTime:return R(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return x(e);case ee.TagString:return F(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return V(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(P(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function j(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),u=r.readByte();if(u===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;u=r.readByte(),u===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&57>=u&&(r.skip(2),u=r.readByte(),u>=48&&57>=u&&(r.skip(2),u=r.readByte()))),t=u===ee.TagUTC?new Date(Date.UTC(n,i,a,s,o,c,f)):new Date(n,i,a,s,o,c,f)}else t=u===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function k(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return C(e);case ee.TagRef:return K(e);default:r(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),u=0,s=r.readByte();return s===ee.TagPoint&&(u=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,u)):new Date(1970,0,1,n,i,a,u),e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return R(e);case ee.TagRef:return K(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){return e.stream.readString(1)}function N(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function F(e){var t=N(e);return e.refer.set(t),t}function P(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return x(e);case ee.TagString:return F(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),u=T(e);r[a]=u}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),u=T(e);r.set(a,u)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=P(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return O(this.stream)}},readBoolean:{value:function(){return j(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return k(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return I(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return F(this)}},readString:{value:function(){return P(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function T(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function b(e,t){return e=m(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:T(e,t)})}function _(e,t){return rt.sendAndReceive(e,t)}function B(e,t,r,n){Ke(e,t).then(r,function(i){E(e,t,r,n)||n(i)})}function E(t,r,n,i){if(r.failswitch&&++ke>=Ce.length&&(ke=0,je=Ce[ke]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){B(t,r,n,i)},a),!0}return!1}function S(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var u=i.readList();i.checkTag(s.TagEnd),j(e,u);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(o){r=o}null!==r?qe.reject(r):qe.resolve(e)};B(g,t,r,qe.reject)}function O(e,t){return function(){return ze?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===p||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var u=0;un;++n)t[n]=e[n]}function k(e){return e?{mode:o.Normal,byref:Re,simple:Ie,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:o.Normal,byref:Re,simple:Ie,timeout:Ue,retry:Me,idempotent:xe,failswitch:Ne,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=k(n);if(t in e){var a=e[t];for(var u in a)u in i&&(i[u]=a[u])}for(var s=0,o=r.length;o>s&&typeof r[s]!==d;++s);if(s===o)return i;var c=r.splice(s,o-s);for(i.onsuccess=c[0],o=c.length,s=1;o>s;++s){var f=c[s];switch(typeof f){case d:i.onerror=f;break;case v:i.byref=f;break;case y:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function I(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function U(e,t,r,n){return Fe?h.promise(function(i,a){Pe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?W(e,t,r):P(e,t,r)}function M(e,t,r,n){return U(t,r,R(e,t,r,n),n)}function x(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function N(e,t,r){var n=I(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){B(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,u=null;try{if(r.mode===o.RawWithEndTag)a=n;else if(r.mode===o.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===o.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===s.TagError&&(u=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(u=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){u=p}u?i(u):e(a)},i)})}function F(e){return function(){e&&(Fe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):U(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Pe),Pe=[])}}function P(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(u){r.onerror&&r.onerror(e,u),i(u)}n(a)}catch(u){i(u)}},function(t){x(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function L(e){var t={timeout:Ue,retry:Me,idempotent:xe,failswitch:Ne,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function D(e,t){var r=e.reduce(function(e,t){return e.write(I(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){B(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,u=new c(r),f=new l(u,!1),h=u.readByte();try{for(;h!==s.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=o.Raw&&(g=new c),h===s.TagResult){if(p===o.Serialized?g=f.readRaw():p>=o.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=u.readByte(),h===s.TagArgument){if(p>=o.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var y=f.readList();C(y,e[a].args)}h=u.readByte()}}else h===s.TagError&&(p>=o.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=u.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=o.Raw?(p===o.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(d){return void i(d)}n(e)},i)})}function z(){ze=!0}function H(e){if(e=e||{},ze=!1,Fe)return h.promise(function(t,r){Pe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=L(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ve(n,r).then(function(t){t.forEach(function(e){if(e.error)x(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&x(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function q(){return Le}function Q(e){typeof e===d&&(Le=e)}function G(){return je}function Y(){return Ne}function J(e){Ne=!!e}function V(){return Ue}function K(e){Ue="number"==typeof e?0|e:0}function X(){return Me}function $(e){Me="number"==typeof e?0|e:0}function Z(){return xe}function ee(e){xe=!!e}function te(e){Ye=!!e}function re(){return Ye}function ne(){return Re}function ie(e){Re=!!e}function ae(){return Ie}function ue(e){Ie=!!e}function se(){return We}function oe(e){We=!!e}function ce(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function fe(e){De.length=0,Array.isArray(e)?e.forEach(function(e){le(e)}):le(e)}function le(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function he(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ge(){return De}function ve(e,r,n){n===t&&(typeof r===v&&(n=r,r=!1),r||(typeof e===v?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||je?(e&&(je=e),(typeof r===p||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(j(i,r),qe.resolve(i),i):(u(S,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==p)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==d&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==d&&t.push(r);for(var u=2;i>u;u++)t.push(arguments[u])}return M(rt,e,t,ze)}function ye(e,t){return qe.then(e,t)}function de(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==p)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==d)throw new TypeError("callback must be a function.");r=n}if(typeof r===d)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==d)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=de(e,r,!0);if(null===a){var u=function(){M(rt,e,[r,a.handler,u,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=de(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(o){}null!==de(e,r,!1)&&u()}},callbacks:[n]},Qe[e][r]=a,u()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===d){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==p)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==d)return void delete Qe[e];r=n}if(typeof r===d&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return M(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(u){return h.error(u)}}},N)}function Ee(e){Ze.push(e),Ve=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},D)}function Se(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},b)}function Oe(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ae(e){return Be(e),rt}var je,Ce=[],ke=-1,Re=!1,Ie=!1,Ue=3e4,Me=10,xe=!1,Ne=!1,Fe=!1,Pe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=N,Ve=D,Ke=b,Xe=_,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:z},end:{value:H},use:{value:function(e){return Ee(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Oe(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:q,set:Q},uri:{get:G},id:{get:be},failswitch:{get:Y,set:J},timeout:{get:V,set:K},retry:{get:X,set:$},idempotent:{get:Z,set:ee},keepAlive:{get:re,set:te},byref:{get:ne,set:ie},simple:{get:ae,set:ue},useHarmonyMap:{get:se,set:oe},filter:{get:ce,set:fe},addFilter:{value:le},removeFilter:{value:he},filters:{get:ge},useService:{value:ve},invoke:{value:pe},ready:{value:ye},subscribe:{value:we},unsubscribe:{value:Te},use:{value:Ae},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===p?(Ce=[n],ke=0,ve(n,i)):Array.isArray(n)&&(Ce=n,ke=Math.floor(Math.random()*Ce.length),ve(Ce[ke],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=e.setImmediate,s=e.hprose.Tags,o=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var v="boolean",p="string",y="number",d="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function l(n,i){var a=new s,u=new XMLHttpRequest;u.open("POST",_.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(u.withCredentials="true"),u.responseType="arraybuffer";for(var o in m)u.setRequestHeader(o,m[o]);if(u.onload=function(){u.onload=r,u.status&&(200===u.status?a.resolve(new Uint8Array(u.response)):a.reject(new Error(u.status+":"+u.statusText)))},u.onerror=function(){a.reject(new Error("error"))},u.upload!==t&&(u.upload.onprogress=T),u.onprogress=b,i.timeout>0&&(a=a.timeout(i.timeout).catchError(function(e){throw u.onload=r,u.onerror=r,u.abort(),e},function(e){return e instanceof c})),n.constructor===String||ArrayBuffer.isView)u.send(n);else if(n.buffer.slice)u.send(n.buffer.slice(0,n.length));else{var f=new Uint8Array(n.length);f.set(n),u.send(f.buffer)}return a}function h(t,r){var n=new s;return e.api.ajax({url:_.uri(),method:"post",data:{body:o.toString(t)},timeout:r.timeout,dataType:"text",headers:m,certificate:_.certificate},function(e,t){e?n.resolve(new o(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?h(t,r):l(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function p(){return T}function y(e){"function"==typeof e&&(b=e)}function d(){return b}function w(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?m[e]=t:delete m[e])}if(this.constructor!==n)return new n(i,a,f);u.call(this,i,a,f);var m=Object.create(null),T=r,b=r,_=this;Object.defineProperties(this,{onprogress:{get:p,set:v},onRequestProgress:{get:p,set:v},onResponseProgress:{get:d,set:y},setHeader:{value:w},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var u=e.hprose.Client,s=e.hprose.Future,o=e.hprose.BytesIO,c=e.TimeoutError;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,u=n.dataLength,s=n.id;for(i.write(r);;){if(0>u&&i.length()>=a&&(u=i.readInt32BE(),0!==(2147483648&u)&&(u&=2147483647,a=8)),8===a&&null===s&&i.length()>=a&&(s=i.readInt32BE()),!(u>=0&&i.length()-a>=u))break;t(i.read(u),s),a=4,s=null,i.trunc(),u=-1}n.stream=i,n.headerLength=a,n.dataLength=u,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function u(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return T}function l(e){"number"==typeof e?(T=0|e,1>T&&(T=10)):T=10}function g(){return b}function p(e){b="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?((null===_||_.uri!==d.uri)&&(_=new a(d)),_.sendAndReceive(e,r,t)):((null===B||B.uri!==d.uri)&&(B=new u(d)),B.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,T=10,b=3e4,_=null,B=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:p},sendAndReceive:{value:y}})}function o(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var u;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)u=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");u=new l}var s=this;return u.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),u.onclose=function(){--s.size},++this.size,u}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var u=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){u.clean(a,n),0===a.count&&u.recycle(a),r.reject(new p("timeout"))},s)),a.count++,a.futures[n]=r;var o=t.length,c=new g(8+o);c.writeInt32BE(2147483648|o),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){u.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var u=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){u.clean(a),u.recycle(a),r.reject(new p("timeout"))},s)),n(a,function(e){u.clean(a),u.sendNext(a),r.resolve(e)}),a.onerror=function(e){u.clean(a),r.reject(e)};var o=t.length,c=new g(4+o);c.writeInt32BE(o),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizem?++m:m=0}function h(e,t){var r=new s;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?E.send(n):n.buffer.slice?E.send(n.buffer.slice(0,n.length)):E.send(n.buffer)}function g(e){B.resolve(e)}function v(e){var r=new s(e.data),n=r.readInt32BE(),i=b[n];if(delete b[n],i!==t&&(--T,i.resolve(r.read(r.length-4))),100>T&&_.length>0){++T;var a=_.shift();B.then(function(){h(a[0],a[1])})}0!==T||S.keepAlive||w()}function p(e){b.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete b[r]}),T=0,E=null}function y(){B=new o,E=new c(S.uri),E.binaryType="arraybuffer",E.onopen=g,E.onmessage=v,E.onerror=r,E.onclose=p}function d(e,t){(null===E||E.readyState===c.CLOSING||E.readyState===c.CLOSED)&&y();var r=l(),n=new o;return b[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete b[r],--T,e},function(e){return e instanceof f})),100>T?(++T,B.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==E&&(E.onopen=r,E.onmessage=r,E.onclose=r,E.close())}if("undefined"==typeof c)throw new Error("WebSocket is not supported by this browser."); +if(this.constructor!==n)return new n(e,i,a);u.call(this,e,i,a);var m=0,T=0,b=[],_=[],B=null,E=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var u=e.hprose.Client,s=e.hprose.BytesIO,o=e.hprose.Future,c=e.WebSocket||e.MozWebSocket,f=e.TimeoutError;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,u=e.JSON,s=1;t.prototype.inputFilter=function(e){var t=n.toString(e);"{"===t.charAt(0)&&(t="["+t+"]");for(var a=u.parse(t),s=new n,o=new i(s,!0),c=0,f=a.length;f>c;++c){var l=a[c];l.error?(s.writeByte(r.TagError),o.writeString(l.error.message)):(s.writeByte(r.TagResult),o.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),o=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=o.readString(),c=i.readByte(),c===r.TagList&&(f.params=o.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?u.stringify(t):u.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 35a3141..8461b57 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/src/APICloudTcpSocket.js b/src/APICloudTcpSocket.js index 6867d81..8b8417e 100644 --- a/src/APICloudTcpSocket.js +++ b/src/APICloudTcpSocket.js @@ -12,7 +12,7 @@ * * * APICloud tcp socket for HTML5. * * * - * LastModified: Mar 1, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -23,6 +23,8 @@ var Future = global.hprose.Future; var atob = global.atob; var btoa = global.btoa; + var toUint8Array = global.hprose.toUint8Array; + var toBinaryString = global.hprose.toBinaryString; function noop(){} @@ -31,7 +33,7 @@ function APICloudTcpSocket() { if (socketManager === null) { - socketManager = api.require('socketManager'); + socketManager = global.api.require('socketManager'); } this.socketId = new Future(); this.connected = false; @@ -52,12 +54,12 @@ timeout: options.timeout, returnBase64: true }, - function(ret, err) { + function(ret/*, err*/) { if (ret) { switch(ret.state) { case 101: break; case 102: self.socketId.resolve(ret.sid); break; - case 103: self.onreceive(btoa(ret.data)); break; + case 103: self.onreceive(toUint8Array(atob(ret.data))); break; case 201: self.socketId.reject(new Error('Create TCP socket failed')); break; case 202: self.socketId.reject(new Error('TCP connection failed')); break; case 203: self.onclose(); self.onerror(new Error('Abnormal disconnect connection')); break; @@ -80,7 +82,7 @@ this.socketId.then(function(socketId) { socketManager.write({ sid: socketId, - data: btoa(data), + data: btoa(toBinaryString(data)), base64: true }, function(ret, err) { diff --git a/src/Base64.js b/src/Base64.js index 113c68f..e083772 100644 --- a/src/Base64.js +++ b/src/Base64.js @@ -12,7 +12,7 @@ * * * Base64 for HTML5. * * * - * LastModified: Feb 29, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -21,7 +21,7 @@ 'use strict'; if (typeof(global.btoa) === "undefined") { - global.btoa = function() { + global.btoa = (function() { var base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); return function(str) { var buf, i, j, len, r, l, c; @@ -60,11 +60,11 @@ } return buf.join(''); }; - }(); + })(); } if (typeof(global.atob) === "undefined") { - global.atob = function() { + global.atob = (function() { var base64DecodeChars = [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -106,29 +106,29 @@ while (i < len) { // c1 c1 = base64DecodeChars[str.charCodeAt(i++)]; - if (c1 === -1) break; + if (c1 === -1) { break; } // c2 c2 = base64DecodeChars[str.charCodeAt(i++)]; - if (c2 === -1) break; + if (c2 === -1) { break; } out[j++] = String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); // c3 c3 = base64DecodeChars[str.charCodeAt(i++)]; - if (c3 === -1) break; + if (c3 === -1) { break; } out[j++] = String.fromCharCode(((c2 & 0x0f) << 4) | ((c3 & 0x3c) >> 2)); // c4 c4 = base64DecodeChars[str.charCodeAt(i++)]; - if (c4 === -1) break; + if (c4 === -1) { break; } out[j++] = String.fromCharCode(((c3 & 0x03) << 6) | c4); } return out.join(''); }; - }(); + })(); } })(this); diff --git a/src/BytesIO.js b/src/BytesIO.js index 58da533..86da1b0 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -216,16 +216,16 @@ } function readString(bytes, n) { - if (n === undefined || n === null || (n < 0)) n = bytes.length; - if (n === 0) return ['', 0]; + if (n === undefined || n === null || (n < 0)) { n = bytes.length; } + if (n === 0) { return ['', 0]; } return ((n < 100000) ? readShortString(bytes, n) : readLongString(bytes, n)); } function readStringAsBytes(bytes, n) { - if (n === undefined) n = bytes.length; - if (n === 0) return [_EMPTY_BYTES, 0]; + if (n === undefined) { n = bytes.length; } + if (n === 0) { return [_EMPTY_BYTES, 0]; } var i = 0, off = 0; for (var len = bytes.length; i < n && off < len; i++) { var unit = bytes[off++]; @@ -425,7 +425,7 @@ } }, write: { value: function(data) { var n = data.byteLength || data.length; - if (n === 0) return; + if (n === 0) { return; } this._grow(n); var bytes = this._bytes; var length = this._length; @@ -449,7 +449,7 @@ } }, writeAsciiString: { value: function(str) { var n = str.length; - if (n === 0) return; + if (n === 0) { return; } this._grow(n); var bytes = this._bytes; var l = this._length; @@ -460,7 +460,7 @@ } }, writeString: { value: function(str) { var n = str.length; - if (n === 0) return; + if (n === 0) { return; } // A single code unit uses at most 3 bytes. // Two code units at most 4. this._grow(n * 3); @@ -516,7 +516,7 @@ if (this._off + n > this._length) { n = this._length - this._off; } - if (n === 0) return _EMPTY_BYTES; + if (n === 0) { return _EMPTY_BYTES; } return this._bytes.subarray(this._off, this._off += n); } }, skip: { value: function(n) { @@ -565,7 +565,7 @@ if (this._off + n > this._length) { n = this._length - this._off; } - if (n === 0) return ''; + if (n === 0) { return ''; } return toBinaryString(this._bytes.subarray(this._off, this._off += n)); } }, // n is the UTF16 length @@ -607,7 +607,7 @@ function toString(data) { /* jshint -W086 */ - if (data.length === 0) return ''; + if (data.length === 0) { return ''; } switch(data.constructor) { case String: return data; case BytesIO: data = data.bytes; diff --git a/src/ChromeTcpSocket.js b/src/ChromeTcpSocket.js index 41cdece..e7a0448 100644 --- a/src/ChromeTcpSocket.js +++ b/src/ChromeTcpSocket.js @@ -12,7 +12,7 @@ * * * chrome tcp socket for JavaScript. * * * - * LastModified: Mar 1, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -21,10 +21,6 @@ 'use strict'; var Future = global.hprose.Future; - var createObject = global.hprose.createObject; - var defineProperties = global.hprose.defineProperties; - var toUint8Array = global.hprose.toUint8Array; - var toBinaryString = global.hprose.toBinaryString; function noop(){} @@ -33,7 +29,7 @@ function receiveListener(info) { var socket = socketPool[info.socketId]; - socket.onreceive(toBinaryString(info.data)); + socket.onreceive(info.data); } function receiveErrorListener(info) { @@ -44,7 +40,7 @@ function ChromeTcpSocket() { if (socketManager === null) { - socketManager = chrome.sockets.tcp; + socketManager = global.chrome.sockets.tcp; socketManager.onReceive.addListener(receiveListener); socketManager.onReceiveError.addListener(receiveErrorListener); } @@ -57,7 +53,7 @@ this.onerror = noop; } - defineProperties(ChromeTcpSocket.prototype, { + Object.defineProperties(ChromeTcpSocket.prototype, { connect: { value: function(address, port, options) { var self = this; socketManager.create({ persistent: options && options.persistent }, function(createInfo) { @@ -133,7 +129,6 @@ }); } }, send: { value: function(data) { - data = toUint8Array(data).buffer; var self = this; var promise = new Future(); this.socketId.then(function(socketId) { diff --git a/src/Client.js b/src/Client.js index 6556dca..7063460 100644 --- a/src/Client.js +++ b/src/Client.js @@ -38,7 +38,6 @@ var s_number = 'number'; var s_function = 'function'; var s_object = 'object'; - var s_undefined = 'undefined'; function Client(uri, functions, settings) { @@ -92,7 +91,7 @@ request = outputFilter(request, context); return _afterFilterHandler(request, context) .then(function(response) { - if (context.oneway) return; + if (context.oneway) { return; } return inputFilter(response, context); }); } @@ -104,7 +103,7 @@ function sendAndReceive(request, context, onsuccess, onerror) { _beforeFilterHandler(request, context) .then(onsuccess, function(e) { - if (retry(request, context, onsuccess, onerror)) return; + if (retry(request, context, onsuccess, onerror)) { return; } onerror(e); }); } @@ -184,7 +183,7 @@ } function setMethods(stub, obj, namespace, name, methods) { - if (obj[name] !== undefined) return; + if (obj[name] !== undefined) { return; } obj[name] = {}; if (typeof(methods) === s_string || methods.constructor === Object) { methods = [methods]; @@ -222,7 +221,7 @@ function copyargs(src, dest) { var n = Math.min(src.length, dest.length); - for (var i = 0; i < n; ++i) dest[i] = src[i]; + for (var i = 0; i < n; ++i) { dest[i] = src[i]; } } function initContext(batch) { @@ -268,9 +267,9 @@ } var i = 0, n = args.length; for (; i < n; ++i) { - if (typeof args[i] === s_function) break; + if (typeof args[i] === s_function) { break; } } - if (i === n) return context; + if (i === n) { return context; } var extra = args.splice(i, n - i); context.onsuccess = extra[0]; n = extra.length; @@ -428,7 +427,7 @@ } function call(name, args, context) { - if (context.sync) _lock = true; + if (context.sync) { _lock = true; } var promise = Future.promise(function(resolve, reject) { _invokeHandler(name, args, context).then(function(result) { try { @@ -594,9 +593,9 @@ }); } var batchSize = _batches.length; - if (batchSize === 0) return; + if (batchSize === 0) { return Future.value([]); } var context = getBatchContext(settings); - if (context.sync) _lock = true; + if (context.sync) { _lock = true; } var batches = _batches; _batches = []; var promise = Future.promise(function(resolve, reject) { @@ -794,7 +793,7 @@ if ((argc < 1) || (typeof name !== s_string)) { throw new Error('name must be a string'); } - if (argc === 1) args = []; + if (argc === 1) { args = []; } if (argc === 2) { if (!Array.isArray(args)) { var _args = []; @@ -865,7 +864,7 @@ }); return; } - if (timeout === undefined) timeout = _timeout; + if (timeout === undefined) { timeout = _timeout; } var topic = getTopic(name, id, true); if (topic === null) { var cb = function() { @@ -888,7 +887,7 @@ catch (e) {} } } - if (getTopic(name, id, false) !== null) cb(); + if (getTopic(name, id, false) !== null) { cb(); } } }, callbacks: [callback] @@ -982,7 +981,7 @@ return function(name, args, context) { try { var result = handler(name, args, context, next); - if (Future.isFuture(result)) return result; + if (Future.isFuture(result)) { return result; } return Future.value(result); } catch (e) { @@ -998,7 +997,7 @@ return function(batches, context) { try { var result = handler(batches, context, next); - if (Future.isFuture(result)) return result; + if (Future.isFuture(result)) { return result; } return Future.value(result); } catch (e) { @@ -1014,7 +1013,7 @@ return function(request, context) { try { var response = handler(request, context, next); - if (Future.isFuture(response)) return response; + if (Future.isFuture(response)) { return response; } return Future.value(response); } catch (e) { @@ -1030,7 +1029,7 @@ return function(request, context) { try { var response = handler(request, context, next); - if (Future.isFuture(response)) return response; + if (Future.isFuture(response)) { return response; } return Future.value(response); } catch (e) { diff --git a/src/Future.js b/src/Future.js index ba5b799..7b56c85 100644 --- a/src/Future.js +++ b/src/Future.js @@ -29,6 +29,7 @@ var setImmediate = global.setImmediate; var setTimeout = global.setTimeout; var clearTimeout = global.clearTimeout; + var TimeoutError = global.TimeoutError; function Future(computation) { Object.defineProperties(this, { @@ -113,7 +114,7 @@ var n = array.length; var count = arraysize(array); var result = new Array(n); - if (count === 0) return value(result); + if (count === 0) { return value(result); } var future = new Future(); Array.forEach(array, function(element, index) { var f = (isPromise(element) ? element : value(element)); @@ -174,7 +175,7 @@ var n = array.length; var count = arraysize(array); var result = new Array(n); - if (count === 0) return value(result); + if (count === 0) { return value(result); } var future = new Future(); Array.forEach(array, function(element, index) { var f = (isPromise(element) ? element : value(element)); @@ -473,8 +474,8 @@ } } }, then: { value: function(onfulfill, onreject) { - if (typeof onfulfill !== 'function') onfulfill = null; - if (typeof onreject !== 'function') onreject = null; + if (typeof onfulfill !== 'function') { onfulfill = null; } + if (typeof onreject !== 'function') { onreject = null; } if (onfulfill || onreject) { var next = new Future(); if (this._state === FULFILLED) { @@ -532,13 +533,13 @@ return this.then( function(v) { var f = action(); - if (f === undefined) return v; + if (f === undefined) { return v; } f = isPromise(f) ? f : value(f); return f.then(function() { return v; }); }, function(e) { var f = action(); - if (f === undefined) throw e; + if (f === undefined) { throw e; } f = isPromise(f) ? f : value(f); return f.then(function() { throw e; }); } @@ -695,7 +696,7 @@ }); }; - if (hasPromise) return; + if (hasPromise) { return; } global.Promise = function(executor) { Future.call(this); diff --git a/src/HarmonyMaps.js b/src/HarmonyMaps.js index cd998bc..db1291d 100644 --- a/src/HarmonyMaps.js +++ b/src/HarmonyMaps.js @@ -13,7 +13,7 @@ * * * Harmony Maps for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -29,7 +29,7 @@ hasForEach = 'forEach' in new global.Map(); } - if (hasWeakMap && hasMap && hasForEach) return; + if (hasWeakMap && hasMap && hasForEach) { return; } var namespaces = Object.create(null); var count = 0; @@ -41,7 +41,9 @@ if ((this === obj) && (n in namespaces) && (namespaces[n] === namespace)) { - if (!(n in privates)) privates[n] = Object.create(null); + if (!(n in privates)) { + privates[n] = Object.create(null); + } return privates[n]; } else { @@ -60,9 +62,13 @@ var n = count++; namespaces[n] = namespace; var map = function (key) { - if (key !== Object(key)) throw new Error('value is not a non-null object'); + if (key !== Object(key)) { + throw new Error('value is not a non-null object'); + } var privates = key.valueOf(namespace, n); - if (privates !== key.valueOf()) return privates; + if (privates !== key.valueOf()) { + return privates; + } reDefineValueOf(key); return key.valueOf(namespace, n); }; @@ -112,9 +118,9 @@ var nullMap = Object.create(null); namespaces[n] = namespace; var map = function (key) { - if (key === null) return nullMap; + if (key === null) { return nullMap; } var privates = key.valueOf(namespace, n); - if (privates !== key.valueOf()) return privates; + if (privates !== key.valueOf()) { return privates; } reDefineValueOf(key); return key.valueOf(namespace, n); }; @@ -199,7 +205,7 @@ clear: { value: function () { keys.length = 0; - for (var key in map) map[key].clear(); + for (var key in map) { map[key].clear(); } size = 0; } }, diff --git a/src/HttpClient.js b/src/HttpClient.js index bdcc06c..284378d 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -23,10 +23,14 @@ var Client = global.hprose.Client; var Future = global.hprose.Future; var BytesIO = global.hprose.BytesIO; + var TimeoutError = global.TimeoutError; + function noop(){} function HttpClient(uri, functions, settings) { - if (this.constructor !== HttpClient) return new HttpClient(uri, functions, settings); + if (this.constructor !== HttpClient) { + return new HttpClient(uri, functions, settings); + } Client.call(this, uri, functions, settings); var _header = Object.create(null); var _onreqprogress = noop; @@ -90,7 +94,7 @@ function apiPost(request, env) { var future = new Future(); - api.ajax({ + global.api.ajax({ url: self.uri(), method: 'post', data: { body: BytesIO.toString(request) }, @@ -114,7 +118,7 @@ typeof(global.api.ajax) !== "undefined"); var future = apicloud ? apiPost(request, env) : xhrPost(request, env); - if (env.oneway) future.resolve(); + if (env.oneway) { future.resolve(); } return future; } diff --git a/src/JSONRPCClientFilter.js b/src/JSONRPCClientFilter.js index 5752604..b2431fb 100644 --- a/src/JSONRPCClientFilter.js +++ b/src/JSONRPCClientFilter.js @@ -25,6 +25,7 @@ var BytesIO = global.hprose.BytesIO; var Writer = global.hprose.Writer; var Reader = global.hprose.Reader; + var JSON = global.JSON; var s_id = 1; @@ -32,7 +33,7 @@ this.version = version || '2.0'; } - JSONRPCClientFilter.prototype.inputFilter = function inputFilter(data, context) { + JSONRPCClientFilter.prototype.inputFilter = function inputFilter(data/*, context*/) { var json = BytesIO.toString(data); if (json.charAt(0) === '{') { json = '[' + json + ']'; @@ -55,7 +56,7 @@ return stream.bytes; }; - JSONRPCClientFilter.prototype.outputFilter = function outputFilter(data, context) { + JSONRPCClientFilter.prototype.outputFilter = function outputFilter(data/*, context*/) { var requests = []; var stream = new BytesIO(data); var reader = new Reader(stream, false, false); diff --git a/src/Loader.js b/src/Loader.js index ecd84c7..53e3774 100644 --- a/src/Loader.js +++ b/src/Loader.js @@ -13,11 +13,12 @@ * * * hprose CommonJS/AMD/CMD loader for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ +/* global define, module */ (function (global) { 'use strict'; diff --git a/src/Reader.js b/src/Reader.js index c1b7ca4..f4280d9 100644 --- a/src/Reader.js +++ b/src/Reader.js @@ -13,7 +13,7 @@ * * * hprose Reader for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -269,7 +269,7 @@ function readInt(stream, tag) { var s = stream.readUntil(tag); - if (s.length === 0) return 0; + if (s.length === 0) { return 0; } return parseInt(s, 10); } function unserialize(reader) { @@ -333,7 +333,7 @@ function readLongWithoutTag(stream) { var s = stream.readUntil(Tags.TagSemicolon); var l = parseInt(s, 10); - if (l.toString() === s) return l; + if (l.toString() === s) { return l; } return s; } function readLong(stream) { @@ -657,12 +657,12 @@ Object.defineProperties(Reader.prototype, { useHarmonyMap: { value: false, writable: true }, checkTag: { value: function(expectTag, tag) { - if (tag === undefined) tag = this.stream.readByte(); - if (tag !== expectTag) unexpectedTag(tag, expectTag); + if (tag === undefined) { tag = this.stream.readByte(); } + if (tag !== expectTag) { unexpectedTag(tag, expectTag); } } }, checkTags: { value: function(expectTags, tag) { - if (tag === undefined) tag = this.stream.readByte(); - if (expectTags.indexOf(tag) >= 0) return tag; + if (tag === undefined) { tag = this.stream.readByte(); } + if (expectTags.indexOf(tag) >= 0) { return tag; } unexpectedTag(tag, expectTags); } }, unserialize: { value: function() { diff --git a/src/TcpClient.js b/src/TcpClient.js index 79ff53e..9887962 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,7 +12,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Feb 28, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -20,198 +20,58 @@ (function (global, undefined) { 'use strict'; + var ChromeTcpSocket = global.hprose.ChromeTcpSocket; + var APICloudTcpSocket = global.hprose.APICloudTcpSocket; var Client = global.hprose.Client; var BytesIO = global.hprose.BytesIO; var Future = global.hprose.Future; - var tcpInit = false; + var TimeoutError = global.TimeoutError; function noop(){} - var socketPool = {}; - var receivePool = {}; - - function TCPSocket() { - this.socketId = new Future(); - this.connected = false; - this.timeid = undefined; - this.onclose = noop; - this.onconnect = noop; - this.onreceive = noop; - this.onerror = noop; - } - - Object.defineProperties(TCPSocket.prototype, { - connect: { value: function(address, port, tls, options) { - var self = this; - chrome.sockets.tcp.create({ persistent: options && options.persistent }, function(createInfo) { - if (options) { - if ('noDelay' in options) { - chrome.sockets.tcp.setNoDelay(createInfo.socketId, options.noDelay, function(result) { - if (result < 0) { - self.socketId.reject(result); - chrome.sockets.tcp.disconnect(createInfo.socketId); - chrome.sockets.tcp.close(createInfo.socketId); - self.onclose(); - } - }); - } - if ('keepAlive' in options) { - chrome.sockets.tcp.setKeepAlive(createInfo.socketId, options.keepAlive, function(result) { - if (result < 0) { - self.socketId.reject(result); - chrome.sockets.tcp.disconnect(createInfo.socketId); - chrome.sockets.tcp.close(createInfo.socketId); - self.onclose(); - } - }); + function setReceiveHandler(socket, onreceive) { + socket.onreceive = function(data) { + if (!('receiveEntry' in socket)) { + socket.receiveEntry = { + stream: new BytesIO(), + headerLength: 4, + dataLength: -1, + id: null + }; + } + var entry = socket.receiveEntry; + var stream = entry.stream; + var headerLength = entry.headerLength; + var dataLength = entry.dataLength; + var id = entry.id; + stream.write(data); + while (true) { + if ((dataLength < 0) && (stream.length() >= headerLength)) { + dataLength = stream.readInt32BE(); + if ((dataLength & 0x80000000) !== 0) { + dataLength &= 0x7fffffff; + headerLength = 8; } } - if (tls) { - chrome.sockets.tcp.setPaused(createInfo.socketId, true, function() { - chrome.sockets.tcp.connect(createInfo.socketId, address, port, function(result) { - if (result < 0) { - self.socketId.reject(result); - chrome.sockets.tcp.disconnect(createInfo.socketId); - chrome.sockets.tcp.close(createInfo.socketId); - self.onclose(); - } - else { - chrome.sockets.tcp.secure(createInfo.socketId, function(secureResult) { - if (secureResult !== 0) { - self.socketId.reject(result); - chrome.sockets.tcp.disconnect(createInfo.socketId); - chrome.sockets.tcp.close(createInfo.socketId); - self.onclose(); - } - else { - chrome.sockets.tcp.setPaused(createInfo.socketId, false, function() { - self.socketId.resolve(createInfo.socketId); - }); - } - }); - } - }); - }); + if ((headerLength === 8) && (id === null) && (stream.length() >= headerLength)) { + id = stream.readInt32BE(); } - else { - chrome.sockets.tcp.connect(createInfo.socketId, address, port, function(result) { - if (result < 0) { - self.socketId.reject(result); - chrome.sockets.tcp.disconnect(createInfo.socketId); - chrome.sockets.tcp.close(createInfo.socketId); - self.onclose(); - } - else { - self.socketId.resolve(createInfo.socketId); - } - }); + if ((dataLength >= 0) && ((stream.length() - headerLength) >= dataLength)) { + onreceive(stream.read(dataLength), id); + headerLength = 4; + id = null; + stream.trunc(); + dataLength = -1; } - }); - this.socketId.then(function(socketId) { - socketPool[socketId] = self; - self.connected = true; - self.onconnect(socketId); - }, function(reason) { - self.onerror(reason); - }); - } }, - send: { value: function(data) { - var self = this; - var promise = new Future(); - this.socketId.then(function(socketId) { - chrome.sockets.tcp.send(socketId, data, function(sendInfo) { - if (sendInfo.resultCode < 0) { - self.onerror(sendInfo.resultCode); - promise.reject(sendInfo.resultCode); - self.destroy(); - } - else { - promise.resolve(sendInfo.bytesSent); - } - }); - }); - return promise; - } }, - destroy: { value: function() { - var self = this; - this.connected = false; - this.socketId.then(function(socketId) { - chrome.sockets.tcp.disconnect(socketId); - chrome.sockets.tcp.close(socketId); - delete socketPool[socketId]; - delete receivePool[socketId]; - self.onclose(); - }); - } }, - ref: { value: function() { - this.socketId.then(function(socketId) { - chrome.sockets.tcp.setPaused(socketId, false); - }); - } }, - unref: { value: function() { - this.socketId.then(function(socketId) { - chrome.sockets.tcp.setPaused(socketId, true); - }); - } }, - clearTimeout: { value: function() { - if (this.timeid !== undefined) { - global.clearTimeout(this.timeid); - } - } }, - setTimeout: { value: function(timeout, fn) { - this.clearTimeout(); - this.timeid = global.setTimeout(fn, timeout); - } } - }); - - function receiveListener(info) { - if (!(info.socketId in receivePool)) { - receivePool[info.socketId] = { - bytes: new BytesIO(), - headerLength: 4, - dataLength: -1, - id: null - }; - } - var socket = socketPool[info.socketId]; - var entry = receivePool[info.socketId]; - var bytes = entry.bytes; - var headerLength = entry.headerLength; - var dataLength = entry.dataLength; - var id = entry.id; - bytes.write(info.data); - while (true) { - if ((dataLength < 0) && (bytes.length >= headerLength)) { - dataLength = bytes.readInt32BE(); - if ((dataLength & 0x80000000) !== 0) { - dataLength &= 0x7fffffff; - headerLength = 8; + else { + break; } } - if ((headerLength === 8) && (id === null) && (bytes.length >= headerLength)) { - id = bytes.readInt32BE(); - } - if ((dataLength >= 0) && ((bytes.length - headerLength) >= dataLength)) { - socket.onreceive(bytes.read(dataLength), id); - headerLength = 4; - id = null; - bytes.trunc(); - dataLength = -1; - } - else { - break; - } - } - entry.bytes = bytes; - entry.headerLength = headerLength; - entry.dataLength = dataLength; - entry.id = id; - } - - function receiveErrorListener(info) { - var socket = socketPool[info.socketId]; - socket.onerror(info.resultCode); - socket.destroy(); + entry.stream = stream; + entry.headerLength = headerLength; + entry.dataLength = dataLength; + entry.id = id; + }; } function TcpTransporter(client) { @@ -233,7 +93,7 @@ // replace to HTTP can be correctly resolved. parser.protocol = "http:"; var address = parser.hostname; - var port = parseInt(parser.port); + var port = parseInt(parser.port, 10); var tls; if (protocol === 'tcp:' || protocol === 'tcp4:' || @@ -249,10 +109,21 @@ else { throw new Error('Unsupported ' + protocol + ' protocol!'); } - var conn = new TCPSocket(); + var conn; + if (global.chrome && global.chrome.sockets && global.chrome.sockets.tcp) { + conn = new ChromeTcpSocket(); + } + else if (global.api && global.api.require) { + conn = new APICloudTcpSocket(); + } + else { + throw new Error('TCP Socket is not supported by this browser or platform.'); + } var self = this; - conn.connect(address, port, tls, { + conn.connect(address, port, { persistent: true, + tls: tls, + timeout: this.client.timeout, noDelay: this.client.noDelay, keepAlive: this.client.keepAlive }); @@ -287,6 +158,16 @@ conn.count = 0; conn.futures = {}; conn.timeoutIds = {}; + setReceiveHandler(conn, function(data, id) { + var future = conn.futures[id]; + if (future) { + self.clean(conn, id); + if (conn.count === 0) { + self.recycle(conn); + } + future.resolve(data); + } + }); conn.onreceive = function (data, id) { var future = conn.futures[id]; if (future) { @@ -353,7 +234,7 @@ buf.writeInt32BE(len | 0x80000000); buf.writeInt32BE(id); buf.write(request); - conn.send(buf.buffer).then(function(result) { + conn.send(buf.buffer).then(function() { self.sendNext(conn); }); } }, @@ -438,11 +319,11 @@ future.reject(new TimeoutError('timeout')); }, timeout); } - conn.onreceive = function(data) { + setReceiveHandler(conn, function(data) { self.clean(conn); self.sendNext(conn); future.resolve(data); - }; + }); conn.onerror = function(e) { self.clean(conn); future.reject(e); @@ -478,11 +359,6 @@ HalfDuplexTcpTransporter.prototype.constructor = TcpTransporter; function TcpClient(uri, functions, settings) { - if (!tcpInit) { - tcpInit = true; - chrome.sockets.tcp.onReceive.addListener(receiveListener); - chrome.sockets.tcp.onReceiveError.addListener(receiveErrorListener); - } if (this.constructor !== TcpClient) { return new TcpClient(uri, functions, settings); } @@ -555,7 +431,7 @@ } hdtrans.sendAndReceive(request, future, env); } - if (env.oneway) future.resolve(); + if (env.oneway) { future.resolve(); } return future; } diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index 4f01bcc..54b76c0 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Feb 28, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -20,9 +20,11 @@ (function (global, undefined) { 'use strict'; - var Client = global.hprose.Client; var BytesIO = global.hprose.BytesIO; + var Client = global.hprose.Client; var Future = global.hprose.Future; + var TimeoutError = global.TimeoutError; + var WebSocket = global.WebSocket || global.MozWebSocket; function noop(){} @@ -30,7 +32,9 @@ if (typeof(WebSocket) === "undefined") { throw new Error('WebSocket is not supported by this browser.'); } - if (this.constructor !== WebSocketClient) return new WebSocketClient(uri, functions, settings); + if (this.constructor !== WebSocketClient) { + return new WebSocketClient(uri, functions, settings); + } Client.call(this, uri, functions, settings); @@ -83,8 +87,8 @@ var request = _requests.shift(); _ready.then(function() { send(request[0], request[1]); }); } - if (_count === 0) { - if (!self.keepAlive) close(); + if (_count === 0 && !self.keepAlive) { + close(); } } function onclose(e) { @@ -130,7 +134,7 @@ else { _requests.push([id, request]); } - if (env.oneway) future.resolve(); + if (env.oneway) { future.resolve(); } return future; } function close() { diff --git a/src/Writer.js b/src/Writer.js index c1c922d..21f24e6 100644 --- a/src/Writer.js +++ b/src/Writer.js @@ -13,7 +13,7 @@ * * * hprose Writer for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -29,7 +29,7 @@ function getClassName(obj) { var cls = obj.constructor; var classname = ClassManager.getClassAlias(cls); - if (classname) return classname; + if (classname) { return classname; } if (cls.name) { classname = cls.name; } @@ -302,9 +302,14 @@ var stream = writer.stream; stream.writeByte(Tags.TagBytes); var n = bytes.byteLength || bytes.length; - if (n > 0) stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagQuote); - if (n > 0) stream.write(bytes); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagQuote); + stream.write(bytes); + } + else { + stream.writeByte(Tags.TagQuote); + } stream.writeByte(Tags.TagQuote); } @@ -313,9 +318,14 @@ var stream = writer.stream; var n = str.length; stream.writeByte(Tags.TagString); - if (n > 0) stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagQuote); - if (n > 0) stream.writeString(str); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagQuote); + stream.writeString(str); + } + else { + stream.writeByte(Tags.TagQuote); + } stream.writeByte(Tags.TagQuote); } @@ -324,10 +334,15 @@ var stream = writer.stream; var n = array.length; stream.writeByte(Tags.TagList); - if (n > 0) stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagOpenbrace); - for (var i = 0; i < n; i++) { - writeElem(writer, array[i]); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + for (var i = 0; i < n; i++) { + writeElem(writer, array[i]); + } + } + else { + stream.writeByte(Tags.TagOpenbrace); } stream.writeByte(Tags.TagClosebrace); } @@ -356,11 +371,16 @@ } var n = fields.length; stream.writeByte(Tags.TagMap); - if (n > 0) stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagOpenbrace); - for (var i = 0; i < n; i++) { - serialize(writer, fields[i]); - serialize(writer, map[fields[i]]); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + for (var i = 0; i < n; i++) { + serialize(writer, fields[i]); + serialize(writer, map[fields[i]]); + } + } + else { + stream.writeByte(Tags.TagOpenbrace); } stream.writeByte(Tags.TagClosebrace); } @@ -370,12 +390,17 @@ var stream = writer.stream; var n = map.size; stream.writeByte(Tags.TagMap); - if (n > 0) stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagOpenbrace); - map.forEach(function(value, key) { - serialize(writer, key); - serialize(writer, value); - }); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + map.forEach(function(value, key) { + serialize(writer, key); + serialize(writer, value); + }); + } + else { + stream.writeByte(Tags.TagOpenbrace); + } stream.writeByte(Tags.TagClosebrace); } @@ -416,10 +441,15 @@ stream.writeByte(Tags.TagQuote); stream.writeString(classname); stream.writeByte(Tags.TagQuote); - if (n > 0) stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagOpenbrace); - for (var i = 0; i < n; i++) { - writeString(writer, fields[i]); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + for (var i = 0; i < n; i++) { + writeString(writer, fields[i]); + } + } + else { + stream.writeByte(Tags.TagOpenbrace); } stream.writeByte(Tags.TagClosebrace); var index = writer._fieldsref.length; diff --git a/src/setImmediate.js b/src/setImmediate.js index c59ed46..fda6331 100644 --- a/src/setImmediate.js +++ b/src/setImmediate.js @@ -13,14 +13,14 @@ * * * setImmediate for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ (function(global, undefined) { 'use strict'; - if (global.setImmediate) return; + if (global.setImmediate) { return; } var doc = global.document; var MutationObserver = global.MutationObserver || global.WebKitMutationObserver || global.MozMutationOvserver; From 9f2d216e2f264ec0bc995cacc24d03324d06d9dd Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 2 Mar 2016 20:48:02 +0800 Subject: [PATCH 21/86] Fixed TcpClient --- dist/hprose-html5.js | 9 --------- dist/hprose-html5.min.js | 2 +- gulpfile.js | 8 ++++++-- src/Polyfill.js | 19 ++++++++++--------- src/TcpClient.js | 16 +++------------- test/test_src.html | 2 ++ 6 files changed, 22 insertions(+), 34 deletions(-) delete mode 100644 dist/hprose-html5.js diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js deleted file mode 100644 index 8f426fe..0000000 --- a/dist/hprose-html5.js +++ /dev/null @@ -1,9 +0,0 @@ -// Hprose for HTML5 v2.0.8 -// Copyright (c) 2008-2016 http://hprose.com -// Hprose is freely distributable under the MIT license. -// For all details and documentation: -// https://github.com/hprose/hprose-html5 - -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;t>n;++n)r[n]=e[n];return r}function i(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t=e.length;if(1e5>t)return String.fromCharCode.apply(String,o(e));for(var r=65535&t,n=t>>16,i=new Array(r?n+1:n),a=0;n>a;++a)i[a]=String.fromCharCode.apply(String,o(e.subarray(a<<16,a+1<<16)));return r&&(i[n]=String.fromCharCode.apply(String,o(e.subarray(n<<16,t)))),i.join("")}function a(e){for(var t=e.length,r=new Uint8Array(t),n=0;t>n;n++)r[n]=255&e.charCodeAt(n);return r}var u=!0;try{String.fromCharCode.apply(String,new Uint8Array([1]))}catch(s){u=!1}var o=u?function(e){return e}:n;e.hprose.generic=r,e.hprose.toBinaryString=i,e.hprose.toUint8Array=a,e.hprose.toArray=n}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,u=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(u(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],o=0,c=s.length;c>o;o++)n.set(s[o][0],s[o][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(u(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},o=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:o(),"null":o()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,u=i.length;u>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,u=i.length;u>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var u=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,o={},c=1,f={};o.mutationObserver=function(){var e=[],t=u.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},o.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},o.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},o.postMessage=function(){var e=u.createElement("iframe");e.style.display="none",u.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},o.readyStateChange=function(){var e=u.documentElement;return function(){var t=a(arguments),r=u.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},o.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?u&&"onreadystatechange"in u.createElement("script")?l.setImmediate=o.readyStateChange():u&&s?l.setImmediate=o.mutationObserver():e.MessageChannel?l.setImmediate=o.messageChannel():u&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=o.postMessage():l.setImmediate=o.setTimeout():l.setImmediate=o.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&W(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||P&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return L(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function u(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function o(e){try{var t=e();return s(t)}catch(r){return u(r)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return Array.forEach(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return s(a);var u=new r;return Array.forEach(e,function(e,t){var r=i(e)?e:s(e);r.then(function(e){a[t]=e,0===--n&&u.resolve(a)},u.reject)}),u})}function h(){return l(arguments)}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){var r=i(e)?e:s(e);r.then(t.resolve,t.reject)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var a=new Array(t),u=new r;return Array.forEach(e,function(e,t){var r=i(e)?e:s(e);r.then(u.resolve,function(e){a[t]=e,0===--n&&u.reject(a)})}),u})}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),a=new Array(t);if(0===n)return s(a);var u=new r;return Array.forEach(e,function(e,t){var r=i(e)?e:s(e);r.whenComplete(function(){a[t]=r.inspect(),0===--n&&u.resolve(a)})}),u})}function y(e){var r=Array.slice(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function d(e,t){var r=Array.slice(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e,t){return function(){return l(arguments).then(function(r){return e.apply(t,r)})}}function m(e,t,r){return l(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return l(e).then(function(e){return e.every(t,r)})}function b(e,t,r){return l(e).then(function(e){return e.some(t,r)})}function _(e,t,r){return l(e).then(function(e){return e.filter(t,r)})}function B(e,t,r){return l(e).then(function(e){return e.map(t,r)})}function E(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function S(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function O(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.lastIndexOf(t,r)})})}function j(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return l(e).then(function(e){return e.find(t,r)})}function k(e,t,r){return l(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){W(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function I(e,t,r){e?R(e,t,r):t.reject(r)}function U(e,t,r,n,a){function u(i){U(e,t,r,n,i)}function s(e){I(t,n,e)}if(i(a))return a===r?void s(new TypeError("Self resolution")):void a.then(u,s);if(null!==a&&"object"==typeof a||"function"==typeof a){var o;try{o=a.then}catch(c){return void s(c)}if("function"==typeof o){var f=!0;try{return void o.call(a,function(e){f&&(f=!1,u(e))},function(e){f&&(f=!1,s(e))})}catch(c){f&&(f=!1,s(c))}return}}e?R(e,n,a):n.resolve(a)}function M(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==x}}})}var x=0,N=1,F=2,P="Promise"in e,W=e.setImmediate,L=e.setTimeout,D=e.clearTimeout,z=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:u},sync:{value:o},value:{value:s},all:{value:l},race:{value:g},resolve:{value:s},reject:{value:u},promise:{value:c},isFuture:{value:n},isPromise:{value:i},join:{value:h},any:{value:v},settle:{value:p},attempt:{value:y},run:{value:d},wrap:{value:w},forEach:{value:m},every:{value:T},some:{value:b},filter:{value:_},map:{value:B},reduce:{value:E},reduceRight:{value:S},indexOf:{value:O},lastIndexOf:{value:A},includes:{value:j},find:{value:C},findIndex:{value:k}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:x,writable:!0},resolve:{value:function(e){if(this._state===x){this._state=N,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();U(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===x){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?R(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===N?e?U(e,t,this,n,this._value):n.resolve(this._value):this._state===F?t?R(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},inspect:{value:function(){switch(this._state){case x:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:s(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:s(n),n.then(function(){throw r})})}},timeout:{value:function(e,t){var n=new r,i=L(function(){n.reject(t||new z("timeout"))},e);return this.whenComplete(function(){D(i)}).then(n.resolve,n.reject),n}},delay:{value:function(e){var t=new r;return this.then(function(r){L(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return m(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return b(this,e,t)}},filter:{value:function(e,t){return _(this,e,t)}},map:{value:function(e,t){return B(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?E(this,e,t):E(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?S(this,e,t):S(this,e)}},indexOf:{value:function(e,t){return O(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return j(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return k(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=M,e.hprose.resolved=s,e.hprose.rejected=u,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},P||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:g},resolve:{value:s},reject:{value:u}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var u=r.charCodeAt(i+1);if(56320>a&&u>=56320&&57343>=u){var s=((1023&a)<<10|1023&u)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var u=e[i++];switch(u>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=u;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&u)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&u)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&u)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function u(e,t){for(var r=[],n=new Array(65535),i=0,a=0,u=e.length;t>i&&u>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(u>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(u>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(u>a+2))throw new Error("Unfinished UTF-8 octet sequence");var o=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(o>=0&&1048575>=o))throw new Error("Character outside valid Unicode range: 0x"+o.toString(16));n[i++]=o>>10&1023|55296,n[i]=1023&o|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):u(e,r)}function o(e,r){if(r===t&&(r=e.length),0===r)return[g,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var u=e[i++];switch(u>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&u)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}}return[e.subarray(0,i),i]}function c(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,g=new Uint8Array(0),v=1024,p=Function.prototype.call.bind(Array.prototype.indexOf);Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?g:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return g.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?g:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=p(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=p(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=o(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){u.set(e,t),a[t]=e}function r(e){return u.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),u=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=O.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&O.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new B,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function u(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(S.TagNull);switch(n.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case B:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void d(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function o(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),u=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),o=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(u+s+o),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),u=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===u&&"00"===s&&"00"===o&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(S.TagTime),r.writeAsciiString(u+s+o),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+a),r.writeByte(S.TagTime),r.writeAsciiString(u+s+o),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),u=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+a),"000"!==u&&(r.writeByte(S.TagPoint),r.writeAsciiString(u)),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function p(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(S.TagOpenbrace);n.writeByte(S.TagClosebrace)}function d(e,t){e._refer.write(t)||y(e,t,o)}function w(e,t){e._refer.write(t)||y(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(S.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(S.TagOpenbrace);for(var s=0;a>s;s++)u(e,n[s]),u(e,t[n[s]])}else r.writeByte(S.TagOpenbrace);r.writeByte(S.TagClosebrace)}function T(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(S.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function b(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var o in t)t.hasOwnProperty(o)&&"function"!=typeof t[o]&&(n[n.length]=o.toString());i=_(e,s,n)}a.writeByte(S.TagObject),a.writeAsciiString(""+i),a.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)u(e,t[n[f]]);a.writeByte(S.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(S.TagClass),n.writeAsciiString(""+t.length),n.writeByte(S.TagQuote),n.writeString(t),n.writeByte(S.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var a=0;i>a;a++)p(e,r[a])}else n.writeByte(S.TagOpenbrace);n.writeByte(S.TagClosebrace);var u=e._fieldsref.length;return e._classref[t]=u,e._fieldsref[u]=r,u}var B=e.Map,E=e.hprose.BytesIO,S=e.hprose.Tags,O=e.hprose.ClassManager,A=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(S.TagRef),this._stream.writeString(""+r),this._stream.writeByte(S.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new B,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){u(this,e)}},writeInteger:{value:function(e){o(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){v(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeString:{value:function(e){p(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeList:{value:function(e){y(this,e,u)}},writeListWithRef:{value:function(e){this._refer.write(e)||y(this,e,u)}},writeMap:{ -value:function(e){e instanceof B?T(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof B?T(this,e):m(this,e))}},writeObject:{value:function(e){b(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||b(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:u(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:o(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function u(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function o(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function v(){Object.defineProperties(this,{ref:{value:[]}})}function p(){return new v}function y(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=d(i,r,0,"."),null===t&&(t=d(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return b(t);case ee.TagLong:return B(t);case ee.TagDouble:return S(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return C(e);case ee.TagTime:return R(e);case ee.TagBytes:return U(e);case ee.TagUTF8Char:return x(e);case ee.TagString:return F(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):H(e);case ee.TagClass:return V(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(P(e));default:r(n)}}function b(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return b(e);default:r(t)}}function B(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return B(e);default:r(t)}}function S(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return S(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function j(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),u=r.readByte();if(u===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;u=r.readByte(),u===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&57>=u&&(r.skip(2),u=r.readByte(),u>=48&&57>=u&&(r.skip(2),u=r.readByte()))),t=u===ee.TagUTC?new Date(Date.UTC(n,i,a,s,o,c,f)):new Date(n,i,a,s,o,c,f)}else t=u===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function k(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return C(e);case ee.TagRef:return K(e);default:r(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),u=0,s=r.readByte();return s===ee.TagPoint&&(u=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,u)):new Date(1970,0,1,n,i,a,u),e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return R(e);case ee.TagRef:return K(e);default:r(t)}}function U(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return U(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){return e.stream.readString(1)}function N(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function F(e){var t=N(e);return e.refer.set(t),t}function P(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return x(e);case ee.TagString:return F(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=T(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function H(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),u=T(e);r[a]=u}return t.skip(1),r}function q(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return H(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new $;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=T(e),u=T(e);r.set(a,u)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=P(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function X(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:p()}})}var $=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(v.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),X.prototype=Object.create(g.prototype),X.prototype.constructor=X,Object.defineProperties(X.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return O(this.stream)}},readBoolean:{value:function(){return j(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return k(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return I(this)}},readBytesWithoutTag:{value:function(){return U(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return F(this)}},readString:{value:function(){return P(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=X}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function T(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function b(e,t){return e=m(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:T(e,t)})}function _(e,t){return rt.sendAndReceive(e,t)}function B(e,t,r,n){Ke(e,t).then(r,function(i){E(e,t,r,n)||n(i)})}function E(t,r,n,i){if(r.failswitch&&++ke>=Ce.length&&(ke=0,je=Ce[ke]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){B(t,r,n,i)},a),!0}return!1}function S(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:Ue,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var u=i.readList();i.checkTag(s.TagEnd),j(e,u);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(o){r=o}null!==r?qe.reject(r):qe.resolve(e)};B(g,t,r,qe.reject)}function O(e,t){return function(){return ze?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===p||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var u=0;un;++n)t[n]=e[n]}function k(e){return e?{mode:o.Normal,byref:Re,simple:Ie,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:o.Normal,byref:Re,simple:Ie,timeout:Ue,retry:Me,idempotent:xe,failswitch:Ne,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function R(e,t,r,n){var i=k(n);if(t in e){var a=e[t];for(var u in a)u in i&&(i[u]=a[u])}for(var s=0,o=r.length;o>s&&typeof r[s]!==d;++s);if(s===o)return i;var c=r.splice(s,o-s);for(i.onsuccess=c[0],o=c.length,s=1;o>s;++s){var f=c[s];switch(typeof f){case d:i.onerror=f;break;case v:i.byref=f;break;case y:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function I(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function U(e,t,r,n){return Fe?h.promise(function(i,a){Pe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?W(e,t,r):P(e,t,r)}function M(e,t,r,n){return U(t,r,R(e,t,r,n),n)}function x(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function N(e,t,r){var n=I(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){B(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,u=null;try{if(r.mode===o.RawWithEndTag)a=n;else if(r.mode===o.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===o.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var v=h.readList();C(v,t),g=f.readByte()}}else g===s.TagError&&(u=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(u=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(p){u=p}u?i(u):e(a)},i)})}function F(e){return function(){e&&(Fe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):U(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Pe),Pe=[])}}function P(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(u){r.onerror&&r.onerror(e,u),i(u)}n(a)}catch(u){i(u)}},function(t){x(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function L(e){var t={timeout:Ue,retry:Me,idempotent:xe,failswitch:Ne,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function D(e,t){var r=e.reduce(function(e,t){return e.write(I(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){B(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,u=new c(r),f=new l(u,!1),h=u.readByte();try{for(;h!==s.TagEnd;){var g=null,v=null,p=e[++a].context.mode;if(p>=o.Raw&&(g=new c),h===s.TagResult){if(p===o.Serialized?g=f.readRaw():p>=o.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=u.readByte(),h===s.TagArgument){if(p>=o.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var y=f.readList();C(y,e[a].args)}h=u.readByte()}}else h===s.TagError&&(p>=o.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=u.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));p>=o.Raw?(p===o.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=v}}catch(d){return void i(d)}n(e)},i)})}function z(){ze=!0}function H(e){if(e=e||{},ze=!1,Fe)return h.promise(function(t,r){Pe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=L(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ve(n,r).then(function(t){t.forEach(function(e){if(e.error)x(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&x(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function q(){return Le}function Q(e){typeof e===d&&(Le=e)}function G(){return je}function Y(){return Ne}function J(e){Ne=!!e}function V(){return Ue}function K(e){Ue="number"==typeof e?0|e:0}function X(){return Me}function $(e){Me="number"==typeof e?0|e:0}function Z(){return xe}function ee(e){xe=!!e}function te(e){Ye=!!e}function re(){return Ye}function ne(){return Re}function ie(e){Re=!!e}function ae(){return Ie}function ue(e){Ie=!!e}function se(){return We}function oe(e){We=!!e}function ce(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function fe(e){De.length=0,Array.isArray(e)?e.forEach(function(e){le(e)}):le(e)}function le(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function he(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ge(){return De}function ve(e,r,n){n===t&&(typeof r===v&&(n=r,r=!1),r||(typeof e===v?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||je?(e&&(je=e),(typeof r===p||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(j(i,r),qe.resolve(i),i):(u(S,i),qe)):new Error("You should set server uri first!")}function pe(e,t,n){var i=arguments.length;if(1>i||typeof e!==p)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==d&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==d&&t.push(r);for(var u=2;i>u;u++)t.push(arguments[u])}return M(rt,e,t,ze)}function ye(e,t){return qe.then(e,t)}function de(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==p)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==d)throw new TypeError("callback must be a function.");r=n}if(typeof r===d)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==d)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=Ue);var a=de(e,r,!0);if(null===a){var u=function(){M(rt,e,[r,a.handler,u,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=de(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(o){}null!==de(e,r,!1)&&u()}},callbacks:[n]},Qe[e][r]=a,u()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===d){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==p)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==d)return void delete Qe[e];r=n}if(typeof r===d&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):me(Qe[e],r,n)}function be(){return Ge}function _e(){return M(rt,"#",[],!1)}function Be(e){$e.push(e),Je=$e.reduceRight(function(e,t){return function(r,n,i){try{var a=t(r,n,i,e);return h.isFuture(a)?a:h.value(a)}catch(u){return h.error(u)}}},N)}function Ee(e){Ze.push(e),Ve=Ze.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},D)}function Se(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},b)}function Oe(e){tt.push(e),Xe=tt.reduceRight(function(e,t){return function(r,n){try{var i=t(r,n,e);return h.isFuture(i)?i:h.value(i)}catch(a){return h.error(a)}}},_)}function Ae(e){return Be(e),rt}var je,Ce=[],ke=-1,Re=!1,Ie=!1,Ue=3e4,Me=10,xe=!1,Ne=!1,Fe=!1,Pe=[],We=!1,Le=r,De=[],ze=!1,He=[],qe=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=N,Ve=D,Ke=b,Xe=_,$e=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:z},end:{value:H},use:{value:function(e){return Ee(e),nt}}}),it=Object.create(null,{use:{value:function(e){return Se(e),it}}}),at=Object.create(null,{use:{value:function(e){return Oe(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:q,set:Q},uri:{get:G},id:{get:be},failswitch:{get:Y,set:J},timeout:{get:V,set:K},retry:{get:X,set:$},idempotent:{get:Z,set:ee},keepAlive:{get:re,set:te},byref:{get:ne,set:ie},simple:{get:ae,set:ue},useHarmonyMap:{get:se,set:oe},filter:{get:ce,set:fe},addFilter:{value:le},removeFilter:{value:he},filters:{get:ge},useService:{value:ve},invoke:{value:pe},ready:{value:ye},subscribe:{value:we},unsubscribe:{value:Te},use:{value:Ae},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===p?(Ce=[n],ke=0,ve(n,i)):Array.isArray(n)&&(Ce=n,ke=Math.floor(Math.random()*Ce.length),ve(Ce[ke],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=e.setImmediate,s=e.hprose.Tags,o=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var v="boolean",p="string",y="number",d="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function l(n,i){var a=new s,u=new XMLHttpRequest;u.open("POST",_.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(u.withCredentials="true"),u.responseType="arraybuffer";for(var o in m)u.setRequestHeader(o,m[o]);if(u.onload=function(){u.onload=r,u.status&&(200===u.status?a.resolve(new Uint8Array(u.response)):a.reject(new Error(u.status+":"+u.statusText)))},u.onerror=function(){a.reject(new Error("error"))},u.upload!==t&&(u.upload.onprogress=T),u.onprogress=b,i.timeout>0&&(a=a.timeout(i.timeout).catchError(function(e){throw u.onload=r,u.onerror=r,u.abort(),e},function(e){return e instanceof c})),n.constructor===String||ArrayBuffer.isView)u.send(n);else if(n.buffer.slice)u.send(n.buffer.slice(0,n.length));else{var f=new Uint8Array(n.length);f.set(n),u.send(f.buffer)}return a}function h(t,r){var n=new s;return e.api.ajax({url:_.uri(),method:"post",data:{body:o.toString(t)},timeout:r.timeout,dataType:"text",headers:m,certificate:_.certificate},function(e,t){e?n.resolve(new o(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?h(t,r):l(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function p(){return T}function y(e){"function"==typeof e&&(b=e)}function d(){return b}function w(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?m[e]=t:delete m[e])}if(this.constructor!==n)return new n(i,a,f);u.call(this,i,a,f);var m=Object.create(null),T=r,b=r,_=this;Object.defineProperties(this,{onprogress:{get:p,set:v},onRequestProgress:{get:p,set:v},onResponseProgress:{get:d,set:y},setHeader:{value:w},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var u=e.hprose.Client,s=e.hprose.Future,o=e.hprose.BytesIO,c=e.TimeoutError;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,u=n.dataLength,s=n.id;for(i.write(r);;){if(0>u&&i.length()>=a&&(u=i.readInt32BE(),0!==(2147483648&u)&&(u&=2147483647,a=8)),8===a&&null===s&&i.length()>=a&&(s=i.readInt32BE()),!(u>=0&&i.length()-a>=u))break;t(i.read(u),s),a=4,s=null,i.trunc(),u=-1}n.stream=i,n.headerLength=a,n.dataLength=u,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function u(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return T}function l(e){"number"==typeof e?(T=0|e,1>T&&(T=10)):T=10}function g(){return b}function p(e){b="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?((null===_||_.uri!==d.uri)&&(_=new a(d)),_.sendAndReceive(e,r,t)):((null===B||B.uri!==d.uri)&&(B=new u(d)),B.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,T=10,b=3e4,_=null,B=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:p},sendAndReceive:{value:y}})}function o(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,v=e.hprose.Future,p=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var u;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)u=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");u=new l}var s=this;return u.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),u.onclose=function(){--s.size},++this.size,u}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.shift();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onreceive=function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))},e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.pool.push(e)}},send:{value:function(t,r,n,i,a){var u=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){u.clean(a,n),0===a.count&&u.recycle(a),r.reject(new p("timeout"))},s)),a.count++,a.futures[n]=r;var o=t.length,c=new g(8+o);c.writeInt32BE(2147483648|o),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){u.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.shift();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e)}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.shift();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var u=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){u.clean(a),u.recycle(a),r.reject(new p("timeout"))},s)),n(a,function(e){u.clean(a),u.sendNext(a),r.resolve(e)}),a.onerror=function(e){u.clean(a),r.reject(e)};var o=t.length,c=new g(4+o);c.writeInt32BE(o),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizem?++m:m=0}function h(e,t){var r=new s;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?E.send(n):n.buffer.slice?E.send(n.buffer.slice(0,n.length)):E.send(n.buffer)}function g(e){B.resolve(e)}function v(e){var r=new s(e.data),n=r.readInt32BE(),i=b[n];if(delete b[n],i!==t&&(--T,i.resolve(r.read(r.length-4))),100>T&&_.length>0){++T;var a=_.shift();B.then(function(){h(a[0],a[1])})}0!==T||S.keepAlive||w()}function p(e){b.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete b[r]}),T=0,E=null}function y(){B=new o,E=new c(S.uri),E.binaryType="arraybuffer",E.onopen=g,E.onmessage=v,E.onerror=r,E.onclose=p}function d(e,t){(null===E||E.readyState===c.CLOSING||E.readyState===c.CLOSED)&&y();var r=l(),n=new o;return b[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete b[r],--T,e},function(e){return e instanceof f})),100>T?(++T,B.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==E&&(E.onopen=r,E.onmessage=r,E.onclose=r,E.close())}if("undefined"==typeof c)throw new Error("WebSocket is not supported by this browser."); -if(this.constructor!==n)return new n(e,i,a);u.call(this,e,i,a);var m=0,T=0,b=[],_=[],B=null,E=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var u=e.hprose.Client,s=e.hprose.BytesIO,o=e.hprose.Future,c=e.WebSocket||e.MozWebSocket,f=e.TimeoutError;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e){"use strict";function t(e){this.version=e||"2.0"}var r=e.hprose.Tags,n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader,u=e.JSON,s=1;t.prototype.inputFilter=function(e){var t=n.toString(e);"{"===t.charAt(0)&&(t="["+t+"]");for(var a=u.parse(t),s=new n,o=new i(s,!0),c=0,f=a.length;f>c;++c){var l=a[c];l.error?(s.writeByte(r.TagError),o.writeString(l.error.message)):(s.writeByte(r.TagResult),o.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),o=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=o.readString(),c=i.readByte(),c===r.TagList&&(f.params=o.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?u.stringify(t):u.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 8461b57..86ef406 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 5261095..0b613f1 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,3 +1,4 @@ +/* jshint node:true */ var gulp = require('gulp'), uglify = require('gulp-uglify'), concat = require('gulp-concat'), @@ -12,6 +13,7 @@ gulp.task('clear', function(){ gulp.task('uglify', ['clear'], function() { return gulp.src(['src/Init.js', 'src/Helper.js', + 'src/Polyfill.js', 'src/HarmonyMaps.js', 'src/TimeoutError.js', 'src/setImmediate.js', @@ -25,14 +27,16 @@ gulp.task('uglify', ['clear'], function() { 'src/ResultMode.js', 'src/Client.js', 'src/HttpClient.js', - 'src/TcpClient.js', 'src/WebSocketClient.js', + 'src/ChromeTcpSocket.js', + 'src/APICloudTcpSocket.js', + 'src/TcpClient.js', 'src/JSONRPCClientFilter.js', 'src/Loader.js']) .pipe(jshint()) .pipe(jshint.reporter()) .pipe(concat('hprose-html5.js')) - .pipe(uglify()) +// .pipe(uglify()) .pipe(gulp.dest('dist')); }); diff --git a/src/Polyfill.js b/src/Polyfill.js index 41f20f9..f0143a9 100644 --- a/src/Polyfill.js +++ b/src/Polyfill.js @@ -13,7 +13,7 @@ * * * Polyfill for JavaScript. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Mar 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -44,18 +44,18 @@ if (!Array.prototype.includes) { Object.defineProperty(Array.prototype, 'includes', { value: function(searchElement /*, fromIndex*/ ) { var O = Object(this); - var len = parseInt(O.length) || 0; + var len = parseInt(O.length, 10) || 0; if (len === 0) { return false; } - var n = parseInt(arguments[1]) || 0; + var n = parseInt(arguments[1], 10) || 0; var k; if (n >= 0) { k = n; } else { k = len + n; - if (k < 0) k = 0; + if (k < 0) { k = 0; } } var currentElement; while (k < len) { @@ -124,9 +124,9 @@ var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); var end = arguments[2]; var relativeEnd = end === undefined ? len : end >> 0; - var final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + var f = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); - while (k < final) { + while (k < f) { O[k] = value; k++; } @@ -146,8 +146,8 @@ var from = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); var end = arguments[2]; var relativeEnd = end === undefined ? len : end >> 0; - var final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); - var count = Math.min(final - from, len - to); + var f = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + var count = Math.min(f - from, len - to); var direction = 1; if (from < to && to < (from + count)) { direction = -1; @@ -358,7 +358,7 @@ var property = properties[i]; var method = proto[property]; if (typeof method === 'function' && typeof obj[property] === 'undefined') { - Object.defineProperty(obj, 'property', { value: generic(method) }); + Object.defineProperty(obj, property, { value: generic(method) }); } } } @@ -412,4 +412,5 @@ 'concat', 'slice' ]); + })(this); diff --git a/src/TcpClient.js b/src/TcpClient.js index 9887962..85c5cf9 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -46,17 +46,17 @@ var id = entry.id; stream.write(data); while (true) { - if ((dataLength < 0) && (stream.length() >= headerLength)) { + if ((dataLength < 0) && (stream.length >= headerLength)) { dataLength = stream.readInt32BE(); if ((dataLength & 0x80000000) !== 0) { dataLength &= 0x7fffffff; headerLength = 8; } } - if ((headerLength === 8) && (id === null) && (stream.length() >= headerLength)) { + if ((headerLength === 8) && (id === null) && (stream.length >= headerLength)) { id = stream.readInt32BE(); } - if ((dataLength >= 0) && ((stream.length() - headerLength) >= dataLength)) { + if ((dataLength >= 0) && ((stream.length - headerLength) >= dataLength)) { onreceive(stream.read(dataLength), id); headerLength = 4; id = null; @@ -168,16 +168,6 @@ future.resolve(data); } }); - conn.onreceive = function (data, id) { - var future = conn.futures[id]; - if (future) { - self.clean(conn, id); - if (conn.count === 0) { - self.recycle(conn); - } - future.resolve(data); - } - }; conn.onerror = function (e) { var futures = conn.futures; for (var id in futures) { diff --git a/test/test_src.html b/test/test_src.html index 9a1d763..d3f3ffe 100644 --- a/test/test_src.html +++ b/test/test_src.html @@ -4,6 +4,8 @@ hprose test + + From 32089119ade8522e6005124a130241dd31d0dc70 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 3 Mar 2016 19:10:14 +0800 Subject: [PATCH 22/86] Update BytesIO --- src/BytesIO.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/BytesIO.js b/src/BytesIO.js index 86da1b0..031e5f1 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -25,7 +25,6 @@ var _EMPTY_BYTES = new Uint8Array(0); var _INIT_SIZE = 1024; - var indexof = Function.prototype.call.bind(Array.prototype.indexOf); function writeInt32BE(bytes, p, i) { bytes[p++] = i >>> 24 & 0xFF; @@ -531,7 +530,7 @@ } }, // the result is an Uint8Array, and includes tag. readBytes: { value: function(tag) { - var pos = indexof(this._bytes, tag, this._off); + var pos = Array.indexOf(this._bytes, tag, this._off); var buf; if (pos === -1) { buf = this._bytes.subarray(this._off, this._length); @@ -546,7 +545,7 @@ // the result is a String, and doesn't include tag. // but the position is the same as readBytes readUntil: { value: function(tag) { - var pos = indexof(this._bytes, tag, this._off); + var pos = Array.indexOf(this._bytes, tag, this._off); var str = ''; if (pos === this._off) { this._off++; From be50ac32266079ca2959b4a4a3bdee8cb7dfdad8 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 8 Mar 2016 22:41:48 +0800 Subject: [PATCH 23/86] Fixed APICloud Tcp Socket --- dist/hprose-html5.js | 6381 ++++++++++++++++++++++++++++++++++++++ dist/hprose-html5.min.js | 2 +- src/APICloudTcpSocket.js | 4 +- 3 files changed, 6384 insertions(+), 3 deletions(-) create mode 100644 dist/hprose-html5.js diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js new file mode 100644 index 0000000..1679125 --- /dev/null +++ b/dist/hprose-html5.js @@ -0,0 +1,6381 @@ +// Hprose for HTML5 v2.0.8 +// Copyright (c) 2008-2016 http://hprose.com +// Hprose is freely distributable under the MIT license. +// For all details and documentation: +// https://github.com/hprose/hprose-html5 + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Init.js * + * * + * hprose init for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + global.hprose = Object.create(null); + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Helper.js * + * * + * hprose helper for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + function generic(method) { + if (typeof method !== "function") { + throw new TypeError(method + " is not a function"); + } + return function(context) { + return method.apply(context, Array.prototype.slice.call(arguments, 1)); + }; + } + + var arrayLikeObjectArgumentsEnabled = true; + + try { + String.fromCharCode.apply(String, new Uint8Array([1])); + } + catch (e) { + arrayLikeObjectArgumentsEnabled = false; + } + + function toArray(arrayLikeObject) { + var n = arrayLikeObject.length; + var a = new Array(n); + for (var i = 0; i < n; ++i) { + a[i] = arrayLikeObject[i]; + } + return a; + } + + var getCharCodes = arrayLikeObjectArgumentsEnabled ? function(bytes) { return bytes; } : toArray; + + function toBinaryString(bytes) { + if (bytes instanceof ArrayBuffer) { + bytes = new Uint8Array(bytes); + } + var n = bytes.length; + if (n < 100000) { + return String.fromCharCode.apply(String, getCharCodes(bytes)); + } + var remain = n & 0xFFFF; + var count = n >> 16; + var a = new Array(remain ? count + 1 : count); + for (var i = 0; i < count; ++i) { + a[i] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(i << 16, (i + 1) << 16))); + } + if (remain) { + a[count] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(count << 16, n))); + } + return a.join(''); + } + + function toUint8Array(bs) { + var n = bs.length; + var data = new Uint8Array(n); + for (var i = 0; i < n; i++) { + data[i] = bs.charCodeAt(i) & 0xFF; + } + return data; + } + + global.hprose.generic = generic; + global.hprose.toBinaryString = toBinaryString; + global.hprose.toUint8Array = toUint8Array; + global.hprose.toArray = toArray; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Polyfill.js * + * * + * Polyfill for JavaScript. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + /* Function */ + if (!Function.prototype.bind) { + Object.defineProperty(Function.prototype, 'bind', { value: function(oThis) { + if (typeof this !== 'function') { + throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + var aArgs = Array.prototype.slice.call(arguments, 1), + toBind = this, + NOP = function() {}, + bound = function() { + return toBind.apply(this instanceof NOP ? this : oThis, + aArgs.concat(Array.prototype.slice.call(arguments))); + }; + if (this.prototype) { + NOP.prototype = this.prototype; + } + bound.prototype = new NOP(); + return bound; + } }); + } + /* Array */ + if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, 'includes', { value: function(searchElement /*, fromIndex*/ ) { + var O = Object(this); + var len = parseInt(O.length, 10) || 0; + if (len === 0) { + return false; + } + var n = parseInt(arguments[1], 10) || 0; + var k; + if (n >= 0) { + k = n; + } + else { + k = len + n; + if (k < 0) { k = 0; } + } + var currentElement; + while (k < len) { + currentElement = O[k]; + if (searchElement === currentElement || + (searchElement !== searchElement && currentElement !== currentElement)) { // NaN !== NaN + return true; + } + k++; + } + return false; + } }); + } + if (!Array.prototype.find) { + Object.defineProperty(Array.prototype, 'find', { value: function(predicate) { + if (this === null || this === undefined) { + throw new TypeError('Array.prototype.find called on null or undefined'); + } + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + var list = Object(this); + var length = list.length >>> 0; + var thisArg = arguments[1]; + var value; + for (var i = 0; i < length; i++) { + value = list[i]; + if (predicate.call(thisArg, value, i, list)) { + return value; + } + } + return undefined; + } }); + } + if (!Array.prototype.findIndex) { + Object.defineProperty(Array.prototype, 'findIndex', { value: function(predicate) { + if (this === null || this === undefined) { + throw new TypeError('Array.prototype.findIndex called on null or undefined'); + } + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + var list = Object(this); + var length = list.length >>> 0; + var thisArg = arguments[1]; + var value; + + for (var i = 0; i < length; i++) { + value = list[i]; + if (predicate.call(thisArg, value, i, list)) { + return i; + } + } + return -1; + } }); + } + if (!Array.prototype.fill) { + Object.defineProperty(Array.prototype, 'fill', { value: function(value) { + if (this === null || this === undefined) { + throw new TypeError('this is null or not defined'); + } + var O = Object(this); + var len = O.length >>> 0; + var start = arguments[1]; + var relativeStart = start >> 0; + var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var f = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + + while (k < f) { + O[k] = value; + k++; + } + return O; + } }); + } + if (!Array.prototype.copyWithin) { + Object.defineProperty(Array.prototype, 'copyWithin', { value: function(target, start/*, end*/) { + if (this === null || this === undefined) { + throw new TypeError('this is null or not defined'); + } + var O = Object(this); + var len = O.length >>> 0; + var relativeTarget = target >> 0; + var to = relativeTarget < 0 ? Math.max(len + relativeTarget, 0) : Math.min(relativeTarget, len); + var relativeStart = start >> 0; + var from = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var f = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + var count = Math.min(f - from, len - to); + var direction = 1; + if (from < to && to < (from + count)) { + direction = -1; + from += count - 1; + to += count - 1; + } + while (count > 0) { + if (from in O) { + O[to] = O[from]; + } + else { + delete O[to]; + } + from += direction; + to += direction; + count--; + } + return O; + } }); + } + if (!Array.from) { + Object.defineProperty(Array, 'from', { value: (function() { + var toStr = Object.prototype.toString; + var isCallable = function(fn) { + return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; + }; + var toInteger = function(value) { + var number = Number(value); + if (isNaN(number)) { return 0; } + if (number === 0 || !isFinite(number)) { return number; } + return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); + }; + var maxSafeInteger = Math.pow(2, 53) - 1; + var toLength = function(value) { + var len = toInteger(value); + return Math.min(Math.max(len, 0), maxSafeInteger); + }; + + return function(arrayLike/*, mapFn, thisArg */) { + var C = this; + var items = Object(arrayLike); + if (arrayLike === null || arrayLike === undefined) { + throw new TypeError("Array.from requires an array-like object - not null or undefined"); + } + var mapFn = arguments.length > 1 ? arguments[1] : void undefined; + var T; + if (typeof mapFn !== 'undefined') { + if (!isCallable(mapFn)) { + throw new TypeError('Array.from: when provided, the second argument must be a function'); + } + if (arguments.length > 2) { + T = arguments[2]; + } + } + var len = toLength(items.length); + var A = isCallable(C) ? Object(new C(len)) : new Array(len); + var k = 0; + var kValue; + while (k < len) { + kValue = items[k]; + if (mapFn) { + A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); + } + else { + A[k] = kValue; + } + k += 1; + } + A.length = len; + return A; + }; + }()) }); + } + if (!Array.of) { + Object.defineProperty(Array, 'of', { value: function() { + return Array.prototype.slice.call(arguments); + } }); + } + /* String */ + if (!String.prototype.startsWith) { + Object.defineProperty(String.prototype, 'startsWith', { value: function(searchString, position){ + position = position || 0; + return this.substr(position, searchString.length) === searchString; + } }); + } + if (!String.prototype.endsWith) { + Object.defineProperty(String.prototype, 'endsWith', { value: function(searchString, position) { + var subjectString = this.toString(); + if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + } }); + } + if (!String.prototype.includes) { + Object.defineProperty(String.prototype, 'includes', { value: function() { + if (typeof arguments[1] === "number") { + if (this.length < arguments[0].length + arguments[1].length) { + return false; + } + else { + return this.substr(arguments[1], arguments[0].length) === arguments[0]; + } + } + else { + return String.prototype.indexOf.apply(this, arguments) !== -1; + } + } }); + } + if (!String.prototype.repeat) { + Object.defineProperty(String.prototype, 'repeat', { value: function(count) { + var str = this.toString(); + count = +count; + if (count !== count) { + count = 0; + } + if (count < 0) { + throw new RangeError('repeat count must be non-negative'); + } + if (count === Infinity) { + throw new RangeError('repeat count must be less than infinity'); + } + count = Math.floor(count); + if (str.length === 0 || count === 0) { + return ''; + } + // Ensuring count is a 31-bit integer allows us to heavily optimize the + // main part. But anyway, most current (August 2014) browsers can't handle + // strings 1 << 28 chars or longer, so: + if (str.length * count >= 1 << 28) { + throw new RangeError('repeat count must not overflow maximum string size'); + } + var rpt = ''; + for (;;) { + if ((count & 1) === 1) { + rpt += str; + } + count >>>= 1; + if (count === 0) { + break; + } + str += str; + } + // Could we try: + // return Array(count + 1).join(this); + return rpt; + } }); + } + if (!String.prototype.trim) { + Object.defineProperty(String.prototype, 'trim', { value: function() { + return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, ''); + } }); + } + if (!String.prototype.trimLeft) { + Object.defineProperty(String.prototype, 'trimLeft', { value: function() { + return this.toString().replace(/^[\s\xa0]+/, ''); + } }); + } + if (!String.prototype.trimRight) { + Object.defineProperty(String.prototype, 'trimRight', { value: function() { + return this.toString().replace(/[\s\xa0]+$/, ''); + } }); + } + /* Object */ + if (!Object.keys) { + Object.defineProperty(Object, 'keys', { value: (function () { + var hasOwnProperty = Object.prototype.hasOwnProperty, + hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), + dontEnums = [ + 'toString', + 'toLocaleString', + 'valueOf', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'constructor' + ], + dontEnumsLength = dontEnums.length; + return function (obj) { + if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) { + throw new TypeError('Object.keys called on non-object'); + } + var result = []; + for (var prop in obj) { + if (hasOwnProperty.call(obj, prop)) { + result.push(prop); + } + } + if (hasDontEnumBug) { + for (var i=0; i < dontEnumsLength; i++) { + if (hasOwnProperty.call(obj, dontEnums[i])) { + result.push(dontEnums[i]); + } + } + } + return result; + }; + })() }); + } + /* Generic methods */ + var generic = global.hprose.generic; + + function genericMethods(obj, properties) { + var proto = obj.prototype; + for (var i = 0, len = properties.length; i < len; i++) { + var property = properties[i]; + var method = proto[property]; + if (typeof method === 'function' && typeof obj[property] === 'undefined') { + Object.defineProperty(obj, property, { value: generic(method) }); + } + } + } + genericMethods(Array, [ + "pop", + "push", + "reverse", + "shift", + "sort", + "splice", + "unshift", + "concat", + "join", + "slice", + "indexOf", + "lastIndexOf", + "filter", + "forEach", + "every", + "map", + "some", + "reduce", + "reduceRight", + "includes", + "find", + "findIndex" + ]); + genericMethods(String, [ + 'quote', + 'substring', + 'toLowerCase', + 'toUpperCase', + 'charAt', + 'charCodeAt', + 'indexOf', + 'lastIndexOf', + 'include', + 'startsWith', + 'endsWith', + 'repeat', + 'trim', + 'trimLeft', + 'trimRight', + 'toLocaleLowerCase', + 'toLocaleUpperCase', + 'match', + 'search', + 'replace', + 'split', + 'substr', + 'concat', + 'slice' + ]); + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * HarmonyMaps.js * + * * + * Harmony Maps for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + var hasWeakMap = 'WeakMap' in global; + var hasMap = 'Map' in global; + var hasForEach = true; + + if (hasMap) { + hasForEach = 'forEach' in new global.Map(); + } + + if (hasWeakMap && hasMap && hasForEach) { return; } + + var namespaces = Object.create(null); + var count = 0; + var reDefineValueOf = function (obj) { + var privates = Object.create(null); + var baseValueOf = obj.valueOf; + Object.defineProperty(obj, 'valueOf', { + value: function (namespace, n) { + if ((this === obj) && + (n in namespaces) && + (namespaces[n] === namespace)) { + if (!(n in privates)) { + privates[n] = Object.create(null); + } + return privates[n]; + } + else { + return baseValueOf.apply(this, arguments); + } + }, + writable: true, + configurable: true, + enumerable: false + }); + }; + + if (!hasWeakMap) { + global.WeakMap = function WeakMap() { + var namespace = Object.create(null); + var n = count++; + namespaces[n] = namespace; + var map = function (key) { + if (key !== Object(key)) { + throw new Error('value is not a non-null object'); + } + var privates = key.valueOf(namespace, n); + if (privates !== key.valueOf()) { + return privates; + } + reDefineValueOf(key); + return key.valueOf(namespace, n); + }; + var m = Object.create(WeakMap.prototype, { + get: { + value: function (key) { + return map(key).value; + } + }, + set: { + value: function (key, value) { + map(key).value = value; + } + }, + has: { + value: function (key) { + return 'value' in map(key); + } + }, + 'delete': { + value: function (key) { + return delete map(key).value; + } + }, + clear: { + value: function () { + delete namespaces[n]; + n = count++; + namespaces[n] = namespace; + } + } + }); + if (arguments.length > 0 && Array.isArray(arguments[0])) { + var iterable = arguments[0]; + for (var i = 0, len = iterable.length; i < len; i++) { + m.set(iterable[i][0], iterable[i][1]); + } + } + return m; + }; + } + + if (!hasMap) { + var objectMap = function () { + var namespace = Object.create(null); + var n = count++; + var nullMap = Object.create(null); + namespaces[n] = namespace; + var map = function (key) { + if (key === null) { return nullMap; } + var privates = key.valueOf(namespace, n); + if (privates !== key.valueOf()) { return privates; } + reDefineValueOf(key); + return key.valueOf(namespace, n); + }; + return { + get: function (key) { return map(key).value; }, + set: function (key, value) { map(key).value = value; }, + has: function (key) { return 'value' in map(key); }, + 'delete': function (key) { return delete map(key).value; }, + clear: function () { + delete namespaces[n]; + n = count++; + namespaces[n] = namespace; + } + }; + }; + var noKeyMap = function () { + var map = Object.create(null); + return { + get: function () { return map.value; }, + set: function (_, value) { map.value = value; }, + has: function () { return 'value' in map; }, + 'delete': function () { return delete map.value; }, + clear: function () { map = Object.create(null); } + }; + }; + var scalarMap = function () { + var map = Object.create(null); + return { + get: function (key) { return map[key]; }, + set: function (key, value) { map[key] = value; }, + has: function (key) { return key in map; }, + 'delete': function (key) { return delete map[key]; }, + clear: function () { map = Object.create(null); } + }; + }; + global.Map = function Map() { + var map = { + 'number': scalarMap(), + 'string': scalarMap(), + 'boolean': scalarMap(), + 'object': objectMap(), + 'function': objectMap(), + 'unknown': objectMap(), + 'undefined': noKeyMap(), + 'null': noKeyMap() + }; + var size = 0; + var keys = []; + var m = Object.create(Map.prototype, { + size: { + get : function () { return size; } + }, + get: { + value: function (key) { + return map[typeof(key)].get(key); + } + }, + set: { + value: function (key, value) { + if (!this.has(key)) { + keys.push(key); + size++; + } + map[typeof(key)].set(key, value); + } + }, + has: { + value: function (key) { + return map[typeof(key)].has(key); + } + }, + 'delete': { + value: function (key) { + if (this.has(key)) { + size--; + keys.splice(keys.indexOf(key), 1); + return map[typeof(key)]['delete'](key); + } + return false; + } + }, + clear: { + value: function () { + keys.length = 0; + for (var key in map) { map[key].clear(); } + size = 0; + } + }, + forEach: { + value: function (callback, thisArg) { + for (var i = 0, n = keys.length; i < n; i++) { + callback.call(thisArg, this.get(keys[i]), keys[i], this); + } + } + } + }); + if (arguments.length > 0 && Array.isArray(arguments[0])) { + var iterable = arguments[0]; + for (var i = 0, len = iterable.length; i < len; i++) { + m.set(iterable[i][0], iterable[i][1]); + } + } + return m; + }; + } + + if (!hasForEach) { + var OldMap = global.Map; + global.Map = function Map() { + var map = new OldMap(); + var size = 0; + var keys = []; + var m = Object.create(Map.prototype, { + size: { + get : function () { return size; } + }, + get: { + value: function (key) { + return map.get(key); + } + }, + set: { + value: function (key, value) { + if (!map.has(key)) { + keys.push(key); + size++; + } + map.set(key, value); + } + }, + has: { + value: function (key) { + return map.has(key); + } + }, + 'delete': { + value: function (key) { + if (map.has(key)) { + size--; + keys.splice(keys.indexOf(key), 1); + return map['delete'](key); + } + return false; + } + }, + clear: { + value: function () { + if ('clear' in map) { + map.clear(); + } + else { + for (var i = 0, n = keys.length; i < n; i++) { + map['delete'](keys[i]); + } + } + keys.length = 0; + size = 0; + } + }, + forEach: { + value: function (callback, thisArg) { + for (var i = 0, n = keys.length; i < n; i++) { + callback.call(thisArg, this.get(keys[i]), keys[i], this); + } + } + } + }); + if (arguments.length > 0 && Array.isArray(arguments[0])) { + var iterable = arguments[0]; + for (var i = 0, len = iterable.length; i < len; i++) { + m.set(iterable[i][0], iterable[i][1]); + } + } + return m; + }; + } +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * TimeoutError.js * + * * + * TimeoutError for HTML5. * + * * + * LastModified: Jul 17, 2015 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +function TimeoutError(message) { + Error.call(this); + this.message = message; + this.name = TimeoutError.name; + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, TimeoutError); + } +} + +TimeoutError.prototype = Object.create(Error.prototype); +TimeoutError.prototype.constructor = TimeoutError; + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * setImmediate.js * + * * + * setImmediate for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function(global, undefined) { + 'use strict'; + if (global.setImmediate) { return; } + + var doc = global.document; + var MutationObserver = global.MutationObserver || global.WebKitMutationObserver || global.MozMutationOvserver; + var polifill = {}; + var nextId = 1; + var tasks = {}; + + function wrap(handler) { + var args = Array.prototype.slice.call(arguments, 1); + return function() { + handler.apply(undefined, args); + }; + } + + function clear(handleId) { + delete tasks[handleId]; + } + + function run(handleId) { + var task = tasks[handleId]; + if (task) { + try { + task(); + } + finally { + clear(handleId); + } + } + } + + function create(args) { + tasks[nextId] = wrap.apply(undefined, args); + return nextId++; + } + + polifill.mutationObserver = function() { + var queue = [], + node = doc.createTextNode(''), + observer = new MutationObserver(function() { + while (queue.length > 0) { + run(queue.shift()); + } + }); + + observer.observe(node, {"characterData": true}); + + return function() { + var handleId = create(arguments); + queue.push(handleId); + node.data = handleId & 1; + return handleId; + }; + }; + + polifill.messageChannel = function() { + var channel = new global.MessageChannel(); + + channel.port1.onmessage = function(event) { + run(Number(event.data)); + }; + + return function() { + var handleId = create(arguments); + channel.port2.postMessage(handleId); + return handleId; + }; + }; + + polifill.nextTick = function() { + return function() { + var handleId = create(arguments); + global.process.nextTick( wrap( run, handleId ) ); + return handleId; + }; + }; + + polifill.postMessage = function() { + var iframe = doc.createElement('iframe'); + iframe.style.display = 'none'; + doc.documentElement.appendChild(iframe); + var iwin = iframe.contentWindow; + iwin.document.write(''); + iwin.document.close(); + var queue = []; + window.addEventListener('message', function() { + while (queue.length > 0) { + run(queue.shift()); + } + }); + return function() { + var handleId = create(arguments); + queue.push(handleId); + iwin.postMessage(1, "*"); + return handleId; + }; + }; + + polifill.readyStateChange = function() { + var html = doc.documentElement; + + return function() { + var handleId = create(arguments); + var script = doc.createElement('script'); + + script.onreadystatechange = function() { + run(handleId); + script.onreadystatechange = null; + html.removeChild(script); + script = null; + }; + + html.appendChild(script); + + return handleId; + }; + }; + + polifill.setTimeout = function() { + return function() { + var handleId = create(arguments); + global.setTimeout( wrap( run, handleId ), 0 ); + return handleId; + }; + }; + + // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. + var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); + attachTo = (attachTo && attachTo.setTimeout ? attachTo : global); + + // Don't get fooled by e.g. browserify environments. + // For Node.js before 0.9 + if (typeof(global.process) !== 'undefined' && + Object.prototype.toString.call(global.process) === '[object process]' && + !global.process.browser) { + attachTo.setImmediate = polifill.nextTick(); + } + // For IE 6–9 + else if (doc && ('onreadystatechange' in doc.createElement('script'))) { + attachTo.setImmediate = polifill.readyStateChange(); + } + // For MutationObserver, where supported + else if (doc && MutationObserver) { + attachTo.setImmediate = polifill.mutationObserver(); + } + // For web workers, where supported + else if (global.MessageChannel) { + attachTo.setImmediate = polifill.messageChannel(); + } + // For non-IE modern browsers + else if (doc && 'postMessage' in global && 'addEventListener' in global) { + attachTo.setImmediate = polifill.postMessage(); + } + // For older browsers + else { + attachTo.setImmediate = polifill.setTimeout(); + } + + attachTo.clearImmediate = clear; +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Future.js * + * * + * hprose Future for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var PENDING = 0; + var FULFILLED = 1; + var REJECTED = 2; + + var hasPromise = 'Promise' in global; + var setImmediate = global.setImmediate; + var setTimeout = global.setTimeout; + var clearTimeout = global.clearTimeout; + var TimeoutError = global.TimeoutError; + + function Future(computation) { + Object.defineProperties(this, { + _subscribers: { value: [] }, + resolve: { value: this.resolve.bind(this) }, + reject: { value: this.reject.bind(this) } + }); + var self = this; + if (typeof computation === 'function') { + setImmediate(function() { + try { + self.resolve(computation()); + } + catch(e) { + self.reject(e); + } + }); + } + } + + function isFuture(obj) { + return obj instanceof Future; + } + + function isPromise(obj) { + return isFuture(obj) || (hasPromise && (obj instanceof global.Promise) && (typeof (obj.then === 'function'))); + } + + function delayed(duration, value) { + var computation = (typeof value === 'function') ? + value : + function() { return value; }; + var future = new Future(); + setTimeout(function() { + try { + future.resolve(computation()); + } + catch(e) { + future.reject(e); + } + }, duration); + return future; + } + + function error(e) { + var future = new Future(); + future.reject(e); + return future; + } + + function value(v) { + var future = new Future(); + future.resolve(v); + return future; + } + + function sync(computation) { + try { + var result = computation(); + return value(result); + } + catch(e) { + return error(e); + } + } + + function promise(executor) { + var future = new Future(); + executor(future.resolve, future.reject); + return future; + } + + function arraysize(array) { + var size = 0; + Array.forEach(array, function() { ++size; }); + return size; + } + + function all(array) { + array = isPromise(array) ? array : value(array); + return array.then(function(array) { + var n = array.length; + var count = arraysize(array); + var result = new Array(n); + if (count === 0) { return value(result); } + var future = new Future(); + Array.forEach(array, function(element, index) { + var f = (isPromise(element) ? element : value(element)); + f.then(function(value) { + result[index] = value; + if (--count === 0) { + future.resolve(result); + } + }, + future.reject); + }); + return future; + }); + } + + function join() { + return all(arguments); + } + + function race(array) { + array = isPromise(array) ? array : value(array); + return array.then(function(array) { + var future = new Future(); + Array.forEach(array, function(element) { + var f = (isPromise(element) ? element : value(element)); + f.then(future.resolve, future.reject); + }); + return future; + }); + } + + function any(array) { + array = isPromise(array) ? array : value(array); + return array.then(function(array) { + var n = array.length; + var count = arraysize(array); + if (count === 0) { + throw new RangeError('any(): array must not be empty'); + } + var reasons = new Array(n); + var future = new Future(); + Array.forEach(array, function(element, index) { + var f = (isPromise(element) ? element : value(element)); + f.then(future.resolve, function(e) { + reasons[index] = e; + if (--count === 0) { + future.reject(reasons); + } + }); + }); + return future; + }); + } + + function settle(array) { + array = isPromise(array) ? array : value(array); + return array.then(function(array) { + var n = array.length; + var count = arraysize(array); + var result = new Array(n); + if (count === 0) { return value(result); } + var future = new Future(); + Array.forEach(array, function(element, index) { + var f = (isPromise(element) ? element : value(element)); + f.whenComplete(function() { + result[index] = f.inspect(); + if (--count === 0) { + future.resolve(result); + } + }); + }); + return future; + }); + } + + function attempt(handler/*, arg1, arg2, ... */) { + var args = Array.slice(arguments, 1); + return all(args).then(function(args) { + return handler.apply(undefined, args); + }); + } + + function run(handler, thisArg/*, arg1, arg2, ... */) { + var args = Array.slice(arguments, 2); + return all(args).then(function(args) { + return handler.apply(thisArg, args); + }); + } + + function wrap(handler, thisArg) { + return function() { + return all(arguments).then(function(args) { + return handler.apply(thisArg, args); + }); + }; + } + + function forEach(array, callback, thisArg) { + return all(array).then(function(array) { + return array.forEach(callback, thisArg); + }); + } + + function every(array, callback, thisArg) { + return all(array).then(function(array) { + return array.every(callback, thisArg); + }); + } + + function some(array, callback, thisArg) { + return all(array).then(function(array) { + return array.some(callback, thisArg); + }); + } + + function filter(array, callback, thisArg) { + return all(array).then(function(array) { + return array.filter(callback, thisArg); + }); + } + + function map(array, callback, thisArg) { + return all(array).then(function(array) { + return array.map(callback, thisArg); + }); + } + + function reduce(array, callback, initialValue) { + if (arguments.length > 2) { + return all(array).then(function(array) { + if (!isPromise(initialValue)) { + initialValue = value(initialValue); + } + return initialValue.then(function(value) { + return array.reduce(callback, value); + }); + }); + } + return all(array).then(function(array) { + return array.reduce(callback); + }); + } + + function reduceRight(array, callback, initialValue) { + if (arguments.length > 2) { + return all(array).then(function(array) { + if (!isPromise(initialValue)) { + initialValue = value(initialValue); + } + return initialValue.then(function(value) { + return array.reduceRight(callback, value); + }); + }); + } + return all(array).then(function(array) { + return array.reduceRight(callback); + }); + } + + function indexOf(array, searchElement, fromIndex) { + return all(array).then(function(array) { + if (!isPromise(searchElement)) { + searchElement = value(searchElement); + } + return searchElement.then(function(searchElement) { + return array.indexOf(searchElement, fromIndex); + }); + }); + } + + function lastIndexOf(array, searchElement, fromIndex) { + return all(array).then(function(array) { + if (!isPromise(searchElement)) { + searchElement = value(searchElement); + } + return searchElement.then(function(searchElement) { + return array.lastIndexOf(searchElement, fromIndex); + }); + }); + } + + function includes(array, searchElement, fromIndex) { + return all(array).then(function(array) { + if (!isPromise(searchElement)) { + searchElement = value(searchElement); + } + return searchElement.then(function(searchElement) { + return array.includes(searchElement, fromIndex); + }); + }); + } + + function find(array, predicate, thisArg) { + return all(array).then(function(array) { + return array.find(predicate, thisArg); + }); + } + + function findIndex(array, predicate, thisArg) { + return all(array).then(function(array) { + return array.findIndex(predicate, thisArg); + }); + } + + Object.defineProperties(Future, { + // port from Dart + delayed: { value: delayed }, + error: { value: error }, + sync: { value: sync }, + value: { value: value }, + // Promise compatible + all: { value: all }, + race: { value: race }, + resolve: { value: value }, + reject: { value: error }, + // extended methods + promise: { value: promise }, + isFuture: { value: isFuture }, + isPromise: { value: isPromise }, + join: { value: join }, + any: { value: any }, + settle: { value: settle }, + attempt: { value: attempt }, + run: { value: run }, + wrap: { value: wrap }, + // for array + forEach: { value: forEach }, + every: { value: every }, + some: { value: some }, + filter: { value: filter }, + map: { value: map }, + reduce: { value: reduce }, + reduceRight: { value: reduceRight }, + indexOf: { value: indexOf }, + lastIndexOf: { value: lastIndexOf }, + includes: { value: includes }, + find: { value: find }, + findIndex: { value: findIndex } + }); + + function _call(callback, next, x) { + setImmediate(function() { + try { + var r = callback(x); + next.resolve(r); + } + catch(e) { + next.reject(e); + } + }); + } + + function _reject(onreject, next, e) { + if (onreject) { + _call(onreject, next, e); + } + else { + next.reject(e); + } + } + + + function _resolve(onfulfill, onreject, self, next, x) { + function resolvePromise(y) { + _resolve(onfulfill, onreject, self, next, y); + } + function rejectPromise(r) { + _reject(onreject, next, r); + } + if (isPromise(x)) { + if (x === self) { + rejectPromise(new TypeError('Self resolution')); + return; + } + x.then(resolvePromise, rejectPromise); + return; + } + if ((x !== null) && + (typeof x === 'object') || + (typeof x === 'function')) { + var then; + try { + then = x.then; + } + catch (e) { + rejectPromise(e); + return; + } + if (typeof then === 'function') { + var notrun = true; + try { + then.call(x, function(y) { + if (notrun) { + notrun = false; + resolvePromise(y); + } + }, function(r) { + if (notrun) { + notrun = false; + rejectPromise(r); + } + }); + return; + } + catch (e) { + if (notrun) { + notrun = false; + rejectPromise(e); + } + } + return; + } + } + if (onfulfill) { + _call(onfulfill, next, x); + } + else { + next.resolve(x); + } + } + + Object.defineProperties(Future.prototype, { + _value: { writable: true }, + _reason: { writable: true }, + _state: { value: PENDING, writable: true }, + resolve: { value: function(value) { + if (this._state === PENDING) { + this._state = FULFILLED; + this._value = value; + var subscribers = this._subscribers; + while (subscribers.length > 0) { + var subscriber = subscribers.shift(); + _resolve(subscriber.onfulfill, + subscriber.onreject, + this, + subscriber.next, + value); + } + } + } }, + reject: { value: function(reason) { + if (this._state === PENDING) { + this._state = REJECTED; + this._reason = reason; + var subscribers = this._subscribers; + while (subscribers.length > 0) { + var subscriber = subscribers.shift(); + if (subscriber.onreject) { + _call(subscriber.onreject, + subscriber.next, + reason); + } + else { + subscriber.next.reject(reason); + } + } + } + } }, + then: { value: function(onfulfill, onreject) { + if (typeof onfulfill !== 'function') { onfulfill = null; } + if (typeof onreject !== 'function') { onreject = null; } + if (onfulfill || onreject) { + var next = new Future(); + if (this._state === FULFILLED) { + if (onfulfill) { + _resolve(onfulfill, onreject, this, next, this._value); + } + else { + next.resolve(this._value); + } + } + else if (this._state === REJECTED) { + if (onreject) { + _call(onreject, next, this._reason); + } + else { + next.reject(this._reason); + } + } + else { + this._subscribers.push({ + onfulfill: onfulfill, + onreject: onreject, + next: next + }); + } + return next; + } + return this; + } }, + inspect: { value: function() { + switch (this._state) { + case PENDING: return { state: 'pending' }; + case FULFILLED: return { state: 'fulfilled', value: this._value }; + case REJECTED: return { state: 'rejected', reason: this._reason }; + } + } }, + catchError: { value: function(onreject, test) { + if (typeof test === 'function') { + var self = this; + return this['catch'](function(e) { + if (test(e)) { + return self['catch'](onreject); + } + else { + throw e; + } + }); + } + return this['catch'](onreject); + } }, + 'catch': { value: function(onreject) { + return this.then(null, onreject); + } }, + whenComplete: { value: function(action) { + return this.then( + function(v) { + var f = action(); + if (f === undefined) { return v; } + f = isPromise(f) ? f : value(f); + return f.then(function() { return v; }); + }, + function(e) { + var f = action(); + if (f === undefined) { throw e; } + f = isPromise(f) ? f : value(f); + return f.then(function() { throw e; }); + } + ); + } }, + timeout: { value: function(duration, reason) { + var future = new Future(); + var timeoutId = setTimeout(function() { + future.reject(reason || new TimeoutError('timeout')); + }, duration); + this.whenComplete(function() { clearTimeout(timeoutId); }) + .then(future.resolve, future.reject); + return future; + } }, + delay: { value: function(duration) { + var future = new Future(); + this.then(function(result) { + setTimeout(function() { + future.resolve(result); + }, duration); + }, + future.reject); + return future; + } }, + tap: { value: function(onfulfilledSideEffect, thisArg) { + return this.then(function(result) { + onfulfilledSideEffect.call(thisArg, result); + return result; + }); + } }, + spread: { value: function(onfulfilledArray, thisArg) { + return this.then(function(array) { + return onfulfilledArray.apply(thisArg, array); + }); + } }, + get: { value: function(key) { + return this.then(function(result) { + return result[key]; + }); + } }, + set: { value: function(key, value) { + return this.then(function(result) { + result[key] = value; + return result; + }); + } }, + apply: { value: function(method, args) { + args = args || []; + return this.then(function(result) { + return all(args).then(function(args) { + return result[method].apply(result, args); + }); + }); + } }, + call: { value: function(method) { + var args = Array.slice(arguments, 1); + return this.then(function(result) { + return all(args).then(function(args) { + return result[method].apply(result, args); + }); + }); + } }, + bind: { value: function(method) { + var bindargs = Array.slice(arguments); + if (Array.isArray(method)) { + for (var i = 0, n = method.length; i < n; ++i) { + bindargs[0] = method[i]; + this.bind.apply(this, bindargs); + } + return; + } + bindargs.shift(); + var self = this; + Object.defineProperty(this, method, { value: function() { + var args = Array.slice(arguments); + return self.then(function(result) { + return all(bindargs.concat(args)).then(function(args) { + return result[method].apply(result, args); + }); + }); + } }); + return this; + } }, + forEach: { value: function(callback, thisArg) { + return forEach(this, callback, thisArg); + } }, + every: { value: function(callback, thisArg) { + return every(this, callback, thisArg); + } }, + some: { value: function(callback, thisArg) { + return some(this, callback, thisArg); + } }, + filter: { value: function(callback, thisArg) { + return filter(this, callback, thisArg); + } }, + map: { value: function(callback, thisArg) { + return map(this, callback, thisArg); + } }, + reduce: { value: function(callback, initialValue) { + if (arguments.length > 1) { + return reduce(this, callback, initialValue); + } + return reduce(this, callback); + } }, + reduceRight: { value: function(callback, initialValue) { + if (arguments.length > 1) { + return reduceRight(this, callback, initialValue); + } + return reduceRight(this, callback); + } }, + indexOf: { value: function(searchElement, fromIndex) { + return indexOf(this, searchElement, fromIndex); + } }, + lastIndexOf: { value: function(searchElement, fromIndex) { + return lastIndexOf(this, searchElement, fromIndex); + } }, + includes: { value: function(searchElement, fromIndex) { + return includes(this, searchElement, fromIndex); + } }, + find: { value: function(predicate, thisArg) { + return find(this, predicate, thisArg); + } }, + findIndex: { value: function(predicate, thisArg) { + return findIndex(this, predicate, thisArg); + } } + }); + + global.hprose.Future = Future; + + function Completer() { + var future = new Future(); + Object.defineProperties(this, { + future: { value: future }, + complete: { value: future.resolve }, + completeError: { value: future.reject }, + isCompleted: { get: function() { + return ( future._state !== PENDING ); + } } + }); + } + + global.hprose.Completer = Completer; + + global.hprose.resolved = value; + + global.hprose.rejected = error; + + global.hprose.deferred = function() { + var self = new Future(); + return Object.create(null, { + promise: { value: self }, + resolve: { value: self.resolve }, + reject: { value: self.reject } + }); + }; + + if (hasPromise) { return; } + + global.Promise = function(executor) { + Future.call(this); + executor(this.resolve, this.reject); + }; + + global.Promise.prototype = Object.create(Future.prototype); + global.Promise.prototype.constructor = Future; + + Object.defineProperties(global.Promise, { + all: { value: all }, + race: { value: race }, + resolve: { value: value }, + reject: { value: error } + }); + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * BytesIO.js * + * * + * hprose BytesIO for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var toBinaryString = global.hprose.toBinaryString; + + var _EMPTY_BYTES = new Uint8Array(0); + var _INIT_SIZE = 1024; + + function writeInt32BE(bytes, p, i) { + bytes[p++] = i >>> 24 & 0xFF; + bytes[p++] = i >>> 16 & 0xFF; + bytes[p++] = i >>> 8 & 0xFF; + bytes[p++] = i & 0xFF; + return p; + } + + function writeInt32LE(bytes, p, i) { + bytes[p++] = i & 0xFF; + bytes[p++] = i >>> 8 & 0xFF; + bytes[p++] = i >>> 16 & 0xFF; + bytes[p++] = i >>> 24 & 0xFF; + return p; + } + + function writeString(bytes, p, str) { + var n = str.length; + for (var i = 0; i < n; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit < 0x80) { + bytes[p++] = codeUnit; + } + else if (codeUnit < 0x800) { + bytes[p++] = 0xC0 | (codeUnit >> 6); + bytes[p++] = 0x80 | (codeUnit & 0x3F); + } + else if (codeUnit < 0xD800 || codeUnit > 0xDFFF) { + bytes[p++] = 0xE0 | (codeUnit >> 12); + bytes[p++] = 0x80 | ((codeUnit >> 6) & 0x3F); + bytes[p++] = 0x80 | (codeUnit & 0x3F); + } + else { + if (i + 1 < n) { + var nextCodeUnit = str.charCodeAt(i + 1); + if (codeUnit < 0xDC00 && 0xDC00 <= nextCodeUnit && nextCodeUnit <= 0xDFFF) { + var rune = (((codeUnit & 0x03FF) << 10) | (nextCodeUnit & 0x03FF)) + 0x010000; + bytes[p++] = 0xF0 | (rune >> 18); + bytes[p++] = 0x80 | ((rune >> 12) & 0x3F); + bytes[p++] = 0x80 | ((rune >> 6) & 0x3F); + bytes[p++] = 0x80 | (rune & 0x3F); + ++i; + continue; + } + } + throw new Error('Malformed string'); + } + } + return p; + } + + function readShortString(bytes, n) { + var charCodes = new Array(n); + var i = 0, off = 0; + for (var len = bytes.length; i < n && off < len; i++) { + var unit = bytes[off++]; + switch (unit >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + charCodes[i] = unit; + break; + case 12: + case 13: + if (off < len) { + charCodes[i] = ((unit & 0x1F) << 6) | + (bytes[off++] & 0x3F); + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 14: + if (off + 1 < len) { + charCodes[i] = ((unit & 0x0F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F); + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 15: + if (off + 2 < len) { + var rune = (((unit & 0x07) << 18) | + ((bytes[off++] & 0x3F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F)) - 0x10000; + if (0 <= rune && rune <= 0xFFFFF) { + charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); + charCodes[i] = ((rune & 0x03FF) | 0xDC00); + } + else { + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); + } + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + default: + throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); + } + } + if (i < n) { + charCodes.length = i; + } + return [String.fromCharCode.apply(String, charCodes), off]; + } + + function readLongString(bytes, n) { + var buf = []; + var charCodes = new Array(0xFFFF); + var i = 0, off = 0; + for (var len = bytes.length; i < n && off < len; i++) { + var unit = bytes[off++]; + switch (unit >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + charCodes[i] = unit; + break; + case 12: + case 13: + if (off < len) { + charCodes[i] = ((unit & 0x1F) << 6) | + (bytes[off++] & 0x3F); + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 14: + if (off + 1 < len) { + charCodes[i] = ((unit & 0x0F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F); + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 15: + if (off + 2 < len) { + var rune = (((unit & 0x07) << 18) | + ((bytes[off++] & 0x3F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F)) - 0x10000; + if (0 <= rune && rune <= 0xFFFFF) { + charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); + charCodes[i] = ((rune & 0x03FF) | 0xDC00); + } + else { + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); + } + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + default: + throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); + } + if (i >= 65534) { + var size = i + 1; + charCodes.length = size; + buf.push(String.fromCharCode.apply(String, charCodes)); + n -= size; + i = -1; + } + } + if (i > 0) { + charCodes.length = i; + buf.push(String.fromCharCode.apply(String, charCodes)); + } + return [buf.join(''), off]; + } + + function readString(bytes, n) { + if (n === undefined || n === null || (n < 0)) { n = bytes.length; } + if (n === 0) { return ['', 0]; } + return ((n < 100000) ? + readShortString(bytes, n) : + readLongString(bytes, n)); + } + + function readStringAsBytes(bytes, n) { + if (n === undefined) { n = bytes.length; } + if (n === 0) { return [_EMPTY_BYTES, 0]; } + var i = 0, off = 0; + for (var len = bytes.length; i < n && off < len; i++) { + var unit = bytes[off++]; + switch (unit >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + break; + case 12: + case 13: + if (off < len) { + off++; + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 14: + if (off + 1 < len) { + off += 2; + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 15: + if (off + 2 < len) { + var rune = (((unit & 0x07) << 18) | + ((bytes[off++] & 0x3F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F)) - 0x10000; + if (0 <= rune && rune <= 0xFFFFF) { + i++; + } + else { + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); + } + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + default: + throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); + } + } + return [bytes.subarray(0, off), off]; + } + + function pow2roundup(x) { + --x; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + function BytesIO() { + var a = arguments; + switch (a.length) { + case 1: + switch (a[0].constructor) { + case Uint8Array: + this._bytes = a[0]; + this._length = a[0].length; + break; + case BytesIO: + this._bytes = a[0].toBytes(); + this._length = a[0].length; + break; + case String: + this.writeString(a[0]); + break; + case Number: + this._bytes = new Uint8Array(a[0]); + break; + default: + this._bytes = new Uint8Array(a[0]); + this._length = this._bytes.length; + break; + } + break; + case 2: + this._bytes = new Uint8Array(a[0], a[1]); + this._length = a[1]; + break; + case 3: + this._bytes = new Uint8Array(a[0], a[1], a[2]); + this._length = a[2]; + break; + } + this.mark(); + } + + Object.defineProperties(BytesIO.prototype, { + _bytes: { value: null, writable: true }, + _length: { value: 0, writable: true }, + _wmark: { value: 0, writable: true }, + _off: { value: 0, writable: true }, + _rmark: { value: 0, writable: true }, + _grow: { value: function(n) { + var bytes = this._bytes; + var required = this._length + n; + var size = pow2roundup(required); + if (bytes) { + size *= 2; + if (size > bytes.length) { + var buf = new Uint8Array(size); + buf.set(bytes); + this._bytes = buf; + } + } + else { + size = Math.max(size, _INIT_SIZE); + this._bytes = new Uint8Array(size); + } + } }, + length: { get: function() { return this._length; } }, + capacity: { get: function() { + return this._bytes ? this._bytes.length : 0; + } }, + position: { get: function() { return this._off; } }, + // returns a view of the the internal buffer. + bytes: { get : function() { + return (this._bytes === null) ? + _EMPTY_BYTES : + this._bytes.subarray(0, this._length); + } }, + buffer: { get : function() { + if (this._bytes === null) { + return _EMPTY_BYTES.buffer; + } + if (this._bytes.buffer.slice) { + return this._bytes.buffer.slice(0, this._length); + } + var buf = new Uint8Array(this._length); + buf.set(this._bytes.subarray(0, this._length)); + return buf.buffer; + } }, + mark: { value: function() { + this._wmark = this._length; + this._rmark = this._off; + } }, + reset: { value: function() { + this._length = this._wmark; + this._off = this._rmark; + } }, + clear: { value: function() { + this._bytes = null; + this._length = 0; + this._wmark = 0; + this._off = 0; + this._rmark = 0; + } }, + writeByte: { value: function(b) { + this._grow(1); + this._bytes[this._length++] = b; + } }, + writeInt32BE: { value: function(i) { + if ((i === (i | 0)) && (i <= 2147483647)) { + this._grow(4); + this._length = writeInt32BE(this._bytes, this._length, i); + return; + } + throw new TypeError('value is out of bounds'); + } }, + writeUInt32BE: { value: function(i) { + if (((i & 0x7FFFFFFF) + 0x80000000 === i) && (i >= 0)) { + this._grow(4); + this._length = writeInt32BE(this._bytes, this._length, i | 0); + return; + } + throw new TypeError('value is out of bounds'); + } }, + writeInt32LE: { value: function(i) { + if ((i === (i | 0)) && (i <= 2147483647)) { + this._grow(4); + this._length = writeInt32LE(this._bytes, this._length, i); + return; + } + throw new TypeError('value is out of bounds'); + } }, + writeUInt32LE: { value: function(i) { + if (((i & 0x7FFFFFFF) + 0x80000000 === i) && (i >= 0)) { + this._grow(4); + this._length = writeInt32LE(this._bytes, this._length, i | 0); + return; + } + throw new TypeError('value is out of bounds'); + } }, + write: { value: function(data) { + var n = data.byteLength || data.length; + if (n === 0) { return; } + this._grow(n); + var bytes = this._bytes; + var length = this._length; + switch (data.constructor) { + case ArrayBuffer: + bytes.set(new Uint8Array(data), length); + break; + case Uint8Array: + bytes.set(data, length); + break; + case BytesIO: + bytes.set(data.bytes, length); + break; + default: + for (var i = 0; i < n; i++) { + bytes[length + i] = data[i]; + } + break; + } + this._length += n; + } }, + writeAsciiString: { value: function(str) { + var n = str.length; + if (n === 0) { return; } + this._grow(n); + var bytes = this._bytes; + var l = this._length; + for (var i = 0; i < n; ++i, ++l) { + bytes[l] = str.charCodeAt(i); + } + this._length = l; + } }, + writeString: { value: function(str) { + var n = str.length; + if (n === 0) { return; } + // A single code unit uses at most 3 bytes. + // Two code units at most 4. + this._grow(n * 3); + this._length = writeString(this._bytes, this._length, str); + } }, + readByte: { value: function() { + if (this._off < this._length) { + return this._bytes[this._off++]; + } + return -1; + } }, + readInt32BE: { value: function() { + var bytes = this._bytes; + var off = this._off; + if (off + 3 < this._length) { + var result = bytes[off++] << 24 | + bytes[off++] << 16 | + bytes[off++] << 8 | + bytes[off++]; + this._off = off; + return result; + } + throw new Error('EOF'); + } }, + readUInt32BE: { value: function() { + var value = this.readInt32BE(); + if (value < 0) { + return (value & 0x7FFFFFFF) + 0x80000000; + } + return value; + } }, + readInt32LE: { value: function() { + var bytes = this._bytes; + var off = this._off; + if (off + 3 < this._length) { + var result = bytes[off++] | + bytes[off++] << 8 | + bytes[off++] << 16 | + bytes[off++] << 24; + this._off = off; + return result; + } + throw new Error('EOF'); + } }, + readUInt32LE: { value: function() { + var value = this.readInt32LE(); + if (value < 0) { + return (value & 0x7FFFFFFF) + 0x80000000; + } + return value; + } }, + read: { value: function(n) { + if (this._off + n > this._length) { + n = this._length - this._off; + } + if (n === 0) { return _EMPTY_BYTES; } + return this._bytes.subarray(this._off, this._off += n); + } }, + skip: { value: function(n) { + if (this._off + n > this._length) { + n = this._length - this._off; + this._off = this._length; + } + else { + this._off += n; + } + return n; + } }, + // the result is an Uint8Array, and includes tag. + readBytes: { value: function(tag) { + var pos = Array.indexOf(this._bytes, tag, this._off); + var buf; + if (pos === -1) { + buf = this._bytes.subarray(this._off, this._length); + this._off = this._length; + } + else { + buf = this._bytes.subarray(this._off, pos + 1); + this._off = pos + 1; + } + return buf; + } }, + // the result is a String, and doesn't include tag. + // but the position is the same as readBytes + readUntil: { value: function(tag) { + var pos = Array.indexOf(this._bytes, tag, this._off); + var str = ''; + if (pos === this._off) { + this._off++; + } + else if (pos === -1) { + str = readString(this._bytes.subarray(this._off, this._length))[0]; + this._off = this._length; + } + else { + str = readString(this._bytes.subarray(this._off, pos))[0]; + this._off = pos + 1; + } + return str; + } }, + readAsciiString: { value: function(n) { + if (this._off + n > this._length) { + n = this._length - this._off; + } + if (n === 0) { return ''; } + return toBinaryString(this._bytes.subarray(this._off, this._off += n)); + } }, + // n is the UTF16 length + readStringAsBytes: { value: function(n) { + var r = readStringAsBytes(this._bytes.subarray(this._off, this._length), n); + this._off += r[1]; + return r[0]; + } }, + // n is the UTF16 length + readString: { value: function(n) { + var r = readString(this._bytes.subarray(this._off, this._length), n); + this._off += r[1]; + return r[0]; + } }, + // returns a view of the the internal buffer and clears `this`. + takeBytes: { value: function() { + var buffer = this.bytes; + this.clear(); + return buffer; + } }, + // returns a copy of the current contents and leaves `this` intact. + toBytes: { value: function() { + return new Uint8Array(this.bytes); + } }, + toString: { value: function() { + return readString(this.bytes, this._length)[0]; + } }, + clone: { value: function() { + return new BytesIO(this.toBytes()); + } }, + trunc: { value: function() { + this._bytes = this._bytes.subarray(this._off, this._length); + this._length = this._bytes.length; + this._off = 0; + this._wmark = 0; + this._rmark = 0; + } } + }); + + function toString(data) { + /* jshint -W086 */ + if (data.length === 0) { return ''; } + switch(data.constructor) { + case String: return data; + case BytesIO: data = data.bytes; + case ArrayBuffer: data = new Uint8Array(data); + case Uint8Array: return readString(data, data.length)[0]; + default: return String.fromCharCode.apply(String, data); + } + } + + Object.defineProperty(BytesIO, 'toString', { value: toString }); + + global.hprose.BytesIO = BytesIO; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * Tags.js * + * * + * hprose tags enum for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + global.hprose.Tags = { + /* Serialize Tags */ + TagInteger : 0x69, // 'i' + TagLong : 0x6C, // 'l' + TagDouble : 0x64, // 'd' + TagNull : 0x6E, // 'n' + TagEmpty : 0x65, // 'e' + TagTrue : 0x74, // 't' + TagFalse : 0x66, // 'f' + TagNaN : 0x4E, // 'N' + TagInfinity : 0x49, // 'I' + TagDate : 0x44, // 'D' + TagTime : 0x54, // 'T' + TagUTC : 0x5A, // 'Z' + TagBytes : 0x62, // 'b' + TagUTF8Char : 0x75, // 'u' + TagString : 0x73, // 's' + TagGuid : 0x67, // 'g' + TagList : 0x61, // 'a' + TagMap : 0x6d, // 'm' + TagClass : 0x63, // 'c' + TagObject : 0x6F, // 'o' + TagRef : 0x72, // 'r' + /* Serialize Marks */ + TagPos : 0x2B, // '+' + TagNeg : 0x2D, // '-' + TagSemicolon : 0x3B, // ',' + TagOpenbrace : 0x7B, // '{' + TagClosebrace : 0x7D, // '}' + TagQuote : 0x22, // '"' + TagPoint : 0x2E, // '.' + /* Protocol Tags */ + TagFunctions : 0x46, // 'F' + TagCall : 0x43, // 'C' + TagResult : 0x52, // 'R' + TagArgument : 0x41, // 'A' + TagError : 0x45, // 'E' + TagEnd : 0x7A // 'z' + }; +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * ClassManager.js * + * * + * hprose ClassManager for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + var WeakMap = global.WeakMap; + + var classCache = Object.create(null); + var aliasCache = new WeakMap(); + + function register(cls, alias) { + aliasCache.set(cls, alias); + classCache[alias] = cls; + } + + function getClassAlias(cls) { + return aliasCache.get(cls); + } + + function getClass(alias) { + return classCache[alias]; + } + + global.hprose.ClassManager = Object.create(null, { + register: { value: register }, + getClassAlias: { value: getClassAlias }, + getClass: { value: getClass } + }); + + global.hprose.register = register; + + register(Object, 'Object'); + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Writer.js * + * * + * hprose Writer for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Map = global.Map; + var BytesIO = global.hprose.BytesIO; + var Tags = global.hprose.Tags; + var ClassManager = global.hprose.ClassManager; + + function getClassName(obj) { + var cls = obj.constructor; + var classname = ClassManager.getClassAlias(cls); + if (classname) { return classname; } + if (cls.name) { + classname = cls.name; + } + else { + var ctor = cls.toString(); + classname = ctor.substr(0, ctor.indexOf('(')).replace(/(^\s*function\s*)|(\s*$)/ig, ''); + if (classname === '' || classname === 'Object') { + return (typeof(obj.getClassName) === 'function') ? obj.getClassName() : 'Object'; + } + } + if (classname !== 'Object') { + ClassManager.register(cls, classname); + } + return classname; + } + + var fakeWriterRefer = Object.create(null, { + set: { value: function () {} }, + write: { value: function () { return false; } }, + reset: { value: function () {} } + }); + + function RealWriterRefer(stream) { + Object.defineProperties(this, { + _stream: { value: stream }, + _ref: { value: new Map(), writable: true } + }); + } + + Object.defineProperties(RealWriterRefer.prototype, { + _refcount: { value: 0, writable: true }, + set: { value: function (val) { + this._ref.set(val, this._refcount++); + } }, + write: { value: function (val) { + var index = this._ref.get(val); + if (index !== undefined) { + this._stream.writeByte(Tags.TagRef); + this._stream.writeString('' + index); + this._stream.writeByte(Tags.TagSemicolon); + return true; + } + return false; + } }, + reset: { value: function () { + this._ref = new Map(); + this._refcount = 0; + } } + }); + + function realWriterRefer(stream) { + return new RealWriterRefer(stream); + } + + function Writer(stream, simple) { + Object.defineProperties(this, { + stream: { value: stream }, + _classref: { value: Object.create(null), writable: true }, + _fieldsref: { value: [], writable: true }, + _refer: { value: simple ? fakeWriterRefer : realWriterRefer(stream) } + }); + } + + function serialize(writer, value) { + var stream = writer.stream; + if (value === undefined || value === null) { + stream.writeByte(Tags.TagNull); + return; + } + switch (value.constructor) { + case Function: + stream.writeByte(Tags.TagNull); + return; + case Number: + writeNumber(writer, value); + return; + case Boolean: + writeBoolean(writer, value); + return; + case String: + switch (value.length) { + case 0: + stream.writeByte(Tags.TagEmpty); + return; + case 1: + stream.writeByte(Tags.TagUTF8Char); + stream.writeString(value); + return; + } + writer.writeStringWithRef(value); + return; + case Date: + writer.writeDateWithRef(value); + return; + case Map: + writer.writeMapWithRef(value); + return; + case ArrayBuffer: + case Uint8Array: + case BytesIO: + writer.writeBytesWithRef(value); + return; + case Int8Array: + case Int16Array: + case Int32Array: + case Uint16Array: + case Uint32Array: + writeIntListWithRef(writer, value); + return; + case Float32Array: + case Float64Array: + writeDoubleListWithRef(writer, value); + return; + default: + if (Array.isArray(value)) { + writer.writeListWithRef(value); + } + else { + var classname = getClassName(value); + if (classname === 'Object') { + writer.writeMapWithRef(value); + } + else { + writer.writeObjectWithRef(value); + } + } + break; + } + } + + function writeNumber(writer, n) { + var stream = writer.stream; + n = n.valueOf(); + if (n === (n | 0)) { + if (0 <= n && n <= 9) { + stream.writeByte(n + 0x30); + } + else { + stream.writeByte(Tags.TagInteger); + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagSemicolon); + } + } + else if (isNaN(n)) { + stream.writeByte(Tags.TagNaN); + } + else if (isFinite(n)) { + stream.writeByte(Tags.TagDouble); + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagSemicolon); + } + else { + stream.writeByte(Tags.TagInfinity); + stream.writeByte((n > 0) ? Tags.TagPos : Tags.TagNeg); + } + } + + function writeInteger(writer, n) { + var stream = writer.stream; + if (0 <= n && n <= 9) { + stream.writeByte(n + 0x30); + } + else { + if (n < -2147483648 || n > 2147483647) { + stream.writeByte(Tags.TagLong); + } + else { + stream.writeByte(Tags.TagInteger); + } + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagSemicolon); + } + } + + function writeDouble(writer, n) { + var stream = writer.stream; + if (isNaN(n)) { + stream.writeByte(Tags.TagNaN); + } + else if (isFinite(n)) { + stream.writeByte(Tags.TagDouble); + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagSemicolon); + } + else { + stream.writeByte(Tags.TagInfinity); + stream.writeByte((n > 0) ? Tags.TagPos : Tags.TagNeg); + } + } + + function writeBoolean(writer, b) { + writer.stream.writeByte(b.valueOf() ? Tags.TagTrue : Tags.TagFalse); + } + + function writeUTCDate(writer, date) { + writer._refer.set(date); + var stream = writer.stream; + var year = ('0000' + date.getUTCFullYear()).slice(-4); + var month = ('00' + (date.getUTCMonth() + 1)).slice(-2); + var day = ('00' + date.getUTCDate()).slice(-2); + var hour = ('00' + date.getUTCHours()).slice(-2); + var minute = ('00' + date.getUTCMinutes()).slice(-2); + var second = ('00' + date.getUTCSeconds()).slice(-2); + var millisecond = ('000' + date.getUTCMilliseconds()).slice(-3); + stream.writeByte(Tags.TagDate); + stream.writeAsciiString(year + month + day); + stream.writeByte(Tags.TagTime); + stream.writeAsciiString(hour + minute + second); + if (millisecond !== '000') { + stream.writeByte(Tags.TagPoint); + stream.writeAsciiString(millisecond); + } + stream.writeByte(Tags.TagUTC); + } + + function writeDate(writer, date) { + writer._refer.set(date); + var stream = writer.stream; + var year = ('0000' + date.getFullYear()).slice(-4); + var month = ('00' + (date.getMonth() + 1)).slice(-2); + var day = ('00' + date.getDate()).slice(-2); + var hour = ('00' + date.getHours()).slice(-2); + var minute = ('00' + date.getMinutes()).slice(-2); + var second = ('00' + date.getSeconds()).slice(-2); + var millisecond = ('000' + date.getMilliseconds()).slice(-3); + if ((hour === '00') && (minute === '00') && + (second === '00') && (millisecond === '000')) { + stream.writeByte(Tags.TagDate); + stream.writeAsciiString(year + month + day); + } + else if ((year === '1970') && (month === '01') && (day === '01')) { + stream.writeByte(Tags.TagTime); + stream.writeAsciiString(hour + minute + second); + if (millisecond !== '000') { + stream.writeByte(Tags.TagPoint); + stream.writeAsciiString(millisecond); + } + } + else { + stream.writeByte(Tags.TagDate); + stream.writeAsciiString(year + month + day); + stream.writeByte(Tags.TagTime); + stream.writeAsciiString(hour + minute + second); + if (millisecond !== '000') { + stream.writeByte(Tags.TagPoint); + stream.writeAsciiString(millisecond); + } + } + stream.writeByte(Tags.TagSemicolon); + } + + function writeTime(writer, time) { + writer._refer.set(time); + var stream = writer.stream; + var hour = ('00' + time.getHours()).slice(-2); + var minute = ('00' + time.getMinutes()).slice(-2); + var second = ('00' + time.getSeconds()).slice(-2); + var millisecond = ('000' + time.getMilliseconds()).slice(-3); + stream.writeByte(Tags.TagTime); + stream.writeAsciiString(hour + minute + second); + if (millisecond !== '000') { + stream.writeByte(Tags.TagPoint); + stream.writeAsciiString(millisecond); + } + stream.writeByte(Tags.TagSemicolon); + } + + function writeBytes(writer, bytes) { + writer._refer.set(bytes); + var stream = writer.stream; + stream.writeByte(Tags.TagBytes); + var n = bytes.byteLength || bytes.length; + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagQuote); + stream.write(bytes); + } + else { + stream.writeByte(Tags.TagQuote); + } + stream.writeByte(Tags.TagQuote); + } + + function writeString(writer, str) { + writer._refer.set(str); + var stream = writer.stream; + var n = str.length; + stream.writeByte(Tags.TagString); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagQuote); + stream.writeString(str); + } + else { + stream.writeByte(Tags.TagQuote); + } + stream.writeByte(Tags.TagQuote); + } + + function writeArray(writer, array, writeElem) { + writer._refer.set(array); + var stream = writer.stream; + var n = array.length; + stream.writeByte(Tags.TagList); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + for (var i = 0; i < n; i++) { + writeElem(writer, array[i]); + } + } + else { + stream.writeByte(Tags.TagOpenbrace); + } + stream.writeByte(Tags.TagClosebrace); + } + + function writeIntListWithRef(writer, list) { + if (!writer._refer.write(list)) { + writeArray(writer, list, writeInteger); + } + } + + function writeDoubleListWithRef(writer, list) { + if (!writer._refer.write(list)) { + writeArray(writer, list, writeDouble); + } + } + + function writeMap(writer, map) { + writer._refer.set(map); + var stream = writer.stream; + var fields = []; + for (var key in map) { + if (map.hasOwnProperty(key) && + typeof(map[key]) !== 'function') { + fields[fields.length] = key; + } + } + var n = fields.length; + stream.writeByte(Tags.TagMap); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + for (var i = 0; i < n; i++) { + serialize(writer, fields[i]); + serialize(writer, map[fields[i]]); + } + } + else { + stream.writeByte(Tags.TagOpenbrace); + } + stream.writeByte(Tags.TagClosebrace); + } + + function writeHarmonyMap(writer, map) { + writer._refer.set(map); + var stream = writer.stream; + var n = map.size; + stream.writeByte(Tags.TagMap); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + map.forEach(function(value, key) { + serialize(writer, key); + serialize(writer, value); + }); + } + else { + stream.writeByte(Tags.TagOpenbrace); + } + stream.writeByte(Tags.TagClosebrace); + } + + function writeObject(writer, obj) { + var stream = writer.stream; + var classname = getClassName(obj); + var fields, index; + if (classname in writer._classref) { + index = writer._classref[classname]; + fields = writer._fieldsref[index]; + } + else { + fields = []; + for (var key in obj) { + if (obj.hasOwnProperty(key) && + typeof(obj[key]) !== 'function') { + fields[fields.length] = key.toString(); + } + } + index = writeClass(writer, classname, fields); + } + stream.writeByte(Tags.TagObject); + stream.writeAsciiString('' + index); + stream.writeByte(Tags.TagOpenbrace); + writer._refer.set(obj); + var n = fields.length; + for (var i = 0; i < n; i++) { + serialize(writer, obj[fields[i]]); + } + stream.writeByte(Tags.TagClosebrace); + } + + function writeClass(writer, classname, fields) { + var stream = writer.stream; + var n = fields.length; + stream.writeByte(Tags.TagClass); + stream.writeAsciiString('' + classname.length); + stream.writeByte(Tags.TagQuote); + stream.writeString(classname); + stream.writeByte(Tags.TagQuote); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + for (var i = 0; i < n; i++) { + writeString(writer, fields[i]); + } + } + else { + stream.writeByte(Tags.TagOpenbrace); + } + stream.writeByte(Tags.TagClosebrace); + var index = writer._fieldsref.length; + writer._classref[classname] = index; + writer._fieldsref[index] = fields; + return index; + } + + Object.defineProperties(Writer.prototype, { + serialize: { value: function(value) { + serialize(this, value); + } }, + writeInteger: { value: function(value) { + writeInteger(this, value); + } }, + writeDouble: { value: function(value) { + writeDouble(this, value); + } }, + writeBoolean: { value: function(value) { + writeBoolean(this, value); + } }, + writeUTCDate: { value: function(value) { + writeUTCDate(this, value); + } }, + writeUTCDateWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeUTCDate(this, value); + } + } }, + writeDate: { value: function(value) { + writeDate(this, value); + } }, + writeDateWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeDate(this, value); + } + } }, + writeTime: { value: function(value) { + writeTime(this, value); + } }, + writeTimeWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeTime(this, value); + } + } }, + writeBytes: { value: function(value) { + writeBytes(this, value); + } }, + writeBytesWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeBytes(this, value); + } + } }, + writeString: { value: function(value) { + writeString(this, value); + } }, + writeStringWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeString(this, value); + } + } }, + writeList: { value: function(value) { + writeArray(this, value, serialize); + } }, + writeListWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeArray(this, value, serialize); + } + } }, + writeMap: { value: function(value) { + if (value instanceof Map) { + writeHarmonyMap(this, value); + } + else { + writeMap(this, value); + } + } }, + writeMapWithRef: { value: function(value) { + if (!this._refer.write(value)) { + if (value instanceof Map) { + writeHarmonyMap(this, value); + } + else { + writeMap(this, value); + } + } + } }, + writeObject: { value: function(value) { + writeObject(this, value); + } }, + writeObjectWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeObject(this, value); + } + } }, + reset: { value: function() { + this._classref = Object.create(null); + this._fieldsref.length = 0; + this._refer.reset(); + } } + }); + + global.hprose.Writer = Writer; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Reader.js * + * * + * hprose Reader for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Map = global.Map; + var BytesIO = global.hprose.BytesIO; + var Tags = global.hprose.Tags; + var ClassManager = global.hprose.ClassManager; + + function unexpectedTag(tag, expectTags) { + if (tag && expectTags) { + var expectTagStr = ''; + if (typeof(expectTags) === 'number') { + expectTagStr = String.fromCharCode(expectTags); + } + else { + expectTagStr = String.fromCharCode.apply(String, expectTags); + } + throw new Error('Tag "' + expectTagStr + '" expected, but "' + String.fromCharCode(tag) + '" found in stream'); + } + else if (tag) { + throw new Error('Unexpected serialize tag "' + String.fromCharCode(tag) + '" in stream'); + } + else { + throw new Error('No byte found in stream'); + } + } + + function readRaw(stream) { + var ostream = new BytesIO(); + _readRaw(stream, ostream); + return ostream.bytes; + } + + function _readRaw(stream, ostream) { + __readRaw(stream, ostream, stream.readByte()); + } + + function __readRaw(stream, ostream, tag) { + ostream.writeByte(tag); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case Tags.TagNull: + case Tags.TagEmpty: + case Tags.TagTrue: + case Tags.TagFalse: + case Tags.TagNaN: + break; + case Tags.TagInfinity: + ostream.writeByte(stream.readByte()); + break; + case Tags.TagInteger: + case Tags.TagLong: + case Tags.TagDouble: + case Tags.TagRef: + readNumberRaw(stream, ostream); + break; + case Tags.TagDate: + case Tags.TagTime: + readDateTimeRaw(stream, ostream); + break; + case Tags.TagUTF8Char: + readUTF8CharRaw(stream, ostream); + break; + case Tags.TagBytes: + readBytesRaw(stream, ostream); + break; + case Tags.TagString: + readStringRaw(stream, ostream); + break; + case Tags.TagGuid: + readGuidRaw(stream, ostream); + break; + case Tags.TagList: + case Tags.TagMap: + case Tags.TagObject: + readComplexRaw(stream, ostream); + break; + case Tags.TagClass: + readComplexRaw(stream, ostream); + _readRaw(stream, ostream); + break; + case Tags.TagError: + _readRaw(stream, ostream); + break; + default: unexpectedTag(tag); + } + } + function readNumberRaw(stream, ostream) { + var tag; + do { + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagSemicolon); + } + function readDateTimeRaw(stream, ostream) { + var tag; + do { + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagSemicolon && + tag !== Tags.TagUTC); + } + function readUTF8CharRaw(stream, ostream) { + ostream.writeString(stream.readString(1)); + } + function readBytesRaw(stream, ostream) { + var count = 0; + var tag = 48; + do { + count *= 10; + count += tag - 48; + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagQuote); + ostream.write(stream.read(count + 1)); + } + function readStringRaw(stream, ostream) { + var count = 0; + var tag = 48; + do { + count *= 10; + count += tag - 48; + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagQuote); + ostream.write(stream.readStringAsBytes(count + 1)); + } + function readGuidRaw(stream, ostream) { + ostream.write(stream.read(38)); + } + function readComplexRaw(stream, ostream) { + var tag; + do { + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagOpenbrace); + while ((tag = stream.readByte()) !== Tags.TagClosebrace) { + __readRaw(stream, ostream, tag); + } + ostream.writeByte(tag); + } + + function RawReader(stream) { + Object.defineProperties(this, { + stream: { value : stream }, + readRaw: { value: function() { return readRaw(stream); } } + }); + } + + global.hprose.RawReader = RawReader; + + var fakeReaderRefer = Object.create(null, { + set: { value: function() {} }, + read: { value: function() { unexpectedTag(Tags.TagRef); } }, + reset: { value: function() {} } + }); + + function RealReaderRefer() { + Object.defineProperties(this, { + ref: { value: [] } + }); + } + + Object.defineProperties(RealReaderRefer.prototype, { + set: { value: function(val) { this.ref.push(val); } }, + read: { value: function(index) { return this.ref[index]; } }, + reset: { value: function() { this.ref.length = 0; } } + }); + + function realReaderRefer() { + return new RealReaderRefer(); + } + + function getter(str) { + var obj = global; + var names = str.split('.'); + var i; + for (i = 0; i < names.length; i++) { + obj = obj[names[i]]; + if (obj === undefined) { + return null; + } + } + return obj; + } + function findClass(cn, poslist, i, c) { + if (i < poslist.length) { + var pos = poslist[i]; + cn[pos] = c; + var cls = findClass(cn, poslist, i + 1, '.'); + if (i + 1 < poslist.length) { + if (cls === null) { + cls = findClass(cn, poslist, i + 1, '_'); + } + } + return cls; + } + var classname = cn.join(''); + try { + var cl = getter(classname); + return ((typeof(cl) === 'function') ? cl : null); + } catch (e) { + return null; + } + } + + function getClass(classname) { + var cls = ClassManager.getClass(classname); + if (cls) { return cls; } + cls = getter(classname); + if (typeof(cls) === 'function') { + ClassManager.register(cls, classname); + return cls; + } + var poslist = []; + var pos = classname.indexOf('_'); + while (pos >= 0) { + poslist[poslist.length] = pos; + pos = classname.indexOf('_', pos + 1); + } + if (poslist.length > 0) { + var cn = classname.split(''); + cls = findClass(cn, poslist, 0, '.'); + if (cls === null) { + cls = findClass(cn, poslist, 0, '_'); + } + if (typeof(cls) === 'function') { + ClassManager.register(cls, classname); + return cls; + } + } + cls = function () {}; + Object.defineProperty(cls.prototype, 'getClassName', { value: function () { + return classname; + }}); + ClassManager.register(cls, classname); + return cls; + } + + + function readInt(stream, tag) { + var s = stream.readUntil(tag); + if (s.length === 0) { return 0; } + return parseInt(s, 10); + } + function unserialize(reader) { + var stream = reader.stream; + var tag = stream.readByte(); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: return tag - 48; + case Tags.TagInteger: return readIntegerWithoutTag(stream); + case Tags.TagLong: return readLongWithoutTag(stream); + case Tags.TagDouble: return readDoubleWithoutTag(stream); + case Tags.TagNull: return null; + case Tags.TagEmpty: return ''; + case Tags.TagTrue: return true; + case Tags.TagFalse: return false; + case Tags.TagNaN: return NaN; + case Tags.TagInfinity: return readInfinityWithoutTag(stream); + case Tags.TagDate: return readDateWithoutTag(reader); + case Tags.TagTime: return readTimeWithoutTag(reader); + case Tags.TagBytes: return readBytesWithoutTag(reader); + case Tags.TagUTF8Char: return readUTF8CharWithoutTag(reader); + case Tags.TagString: return readStringWithoutTag(reader); + case Tags.TagGuid: return readGuidWithoutTag(reader); + case Tags.TagList: return readListWithoutTag(reader); + case Tags.TagMap: return reader.useHarmonyMap ? readHarmonyMapWithoutTag(reader) : readMapWithoutTag(reader); + case Tags.TagClass: readClass(reader); return readObject(reader); + case Tags.TagObject: return readObjectWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + case Tags.TagError: throw new Error(readString(reader)); + default: unexpectedTag(tag); + } + } + function readIntegerWithoutTag(stream) { + return readInt(stream, Tags.TagSemicolon); + } + function readInteger(stream) { + var tag = stream.readByte(); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: return tag - 48; + case Tags.TagInteger: return readIntegerWithoutTag(stream); + default: unexpectedTag(tag); + } + } + function readLongWithoutTag(stream) { + var s = stream.readUntil(Tags.TagSemicolon); + var l = parseInt(s, 10); + if (l.toString() === s) { return l; } + return s; + } + function readLong(stream) { + var tag = stream.readByte(); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: return tag - 48; + case Tags.TagInteger: + case Tags.TagLong: return readLongWithoutTag(stream); + default: unexpectedTag(tag); + } + } + function readDoubleWithoutTag(stream) { + return parseFloat(stream.readUntil(Tags.TagSemicolon)); + } + function readDouble(stream) { + var tag = stream.readByte(); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: return tag - 48; + case Tags.TagInteger: + case Tags.TagLong: + case Tags.TagDouble: return readDoubleWithoutTag(stream); + case Tags.TagNaN: return NaN; + case Tags.TagInfinity: return readInfinityWithoutTag(stream); + default: unexpectedTag(tag); + } + } + function readInfinityWithoutTag(stream) { + return ((stream.readByte() === Tags.TagNeg) ? -Infinity : Infinity); + } + function readBoolean(stream) { + var tag = stream.readByte(); + switch (tag) { + case Tags.TagTrue: return true; + case Tags.TagFalse: return false; + default: unexpectedTag(tag); + } + } + function readDateWithoutTag(reader) { + var stream = reader.stream; + var year = parseInt(stream.readAsciiString(4), 10); + var month = parseInt(stream.readAsciiString(2), 10) - 1; + var day = parseInt(stream.readAsciiString(2), 10); + var date; + var tag = stream.readByte(); + if (tag === Tags.TagTime) { + var hour = parseInt(stream.readAsciiString(2), 10); + var minute = parseInt(stream.readAsciiString(2), 10); + var second = parseInt(stream.readAsciiString(2), 10); + var millisecond = 0; + tag = stream.readByte(); + if (tag === Tags.TagPoint) { + millisecond = parseInt(stream.readAsciiString(3), 10); + tag = stream.readByte(); + if ((tag >= 48) && (tag <= 57)) { + stream.skip(2); + tag = stream.readByte(); + if ((tag >= 48) && (tag <= 57)) { + stream.skip(2); + tag = stream.readByte(); + } + } + } + if (tag === Tags.TagUTC) { + date = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond)); + } + else { + date = new Date(year, month, day, hour, minute, second, millisecond); + } + } + else if (tag === Tags.TagUTC) { + date = new Date(Date.UTC(year, month, day)); + } + else { + date = new Date(year, month, day); + } + reader.refer.set(date); + return date; + } + function readDate(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagDate: return readDateWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readTimeWithoutTag(reader) { + var stream = reader.stream; + var time; + var hour = parseInt(stream.readAsciiString(2), 10); + var minute = parseInt(stream.readAsciiString(2), 10); + var second = parseInt(stream.readAsciiString(2), 10); + var millisecond = 0; + var tag = stream.readByte(); + if (tag === Tags.TagPoint) { + millisecond = parseInt(stream.readAsciiString(3), 10); + tag = stream.readByte(); + if ((tag >= 48) && (tag <= 57)) { + stream.skip(2); + tag = stream.readByte(); + if ((tag >= 48) && (tag <= 57)) { + stream.skip(2); + tag = stream.readByte(); + } + } + } + if (tag === Tags.TagUTC) { + time = new Date(Date.UTC(1970, 0, 1, hour, minute, second, millisecond)); + } + else { + time = new Date(1970, 0, 1, hour, minute, second, millisecond); + } + reader.refer.set(time); + return time; + } + function readTime(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagTime: return readTimeWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readBytesWithoutTag(reader) { + var stream = reader.stream; + var count = readInt(stream, Tags.TagQuote); + var bytes = stream.read(count); + stream.skip(1); + reader.refer.set(bytes); + return bytes; + } + function readBytes(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagEmpty: return new Uint8Array(0); + case Tags.TagBytes: return readBytesWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readUTF8CharWithoutTag(reader) { + return reader.stream.readString(1); + } + function _readString(reader) { + var stream = reader.stream; + var s = stream.readString(readInt(stream, Tags.TagQuote)); + stream.skip(1); + return s; + } + function readStringWithoutTag(reader) { + var s = _readString(reader); + reader.refer.set(s); + return s; + } + function readString(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagEmpty: return ''; + case Tags.TagUTF8Char: return readUTF8CharWithoutTag(reader); + case Tags.TagString: return readStringWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readGuidWithoutTag(reader) { + var stream = reader.stream; + stream.skip(1); + var s = stream.readAsciiString(36); + stream.skip(1); + reader.refer.set(s); + return s; + } + function readGuid(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagGuid: return readGuidWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readListWithoutTag(reader) { + var stream = reader.stream; + var list = []; + reader.refer.set(list); + var count = readInt(stream, Tags.TagOpenbrace); + for (var i = 0; i < count; i++) { + list[i] = unserialize(reader); + } + stream.skip(1); + return list; + } + function readList(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagList: return readListWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readMapWithoutTag(reader) { + var stream = reader.stream; + var map = {}; + reader.refer.set(map); + var count = readInt(stream, Tags.TagOpenbrace); + for (var i = 0; i < count; i++) { + var key = unserialize(reader); + var value = unserialize(reader); + map[key] = value; + } + stream.skip(1); + return map; + } + function readMap(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagMap: return readMapWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readHarmonyMapWithoutTag(reader) { + var stream = reader.stream; + var map = new Map(); + reader.refer.set(map); + var count = readInt(stream, Tags.TagOpenbrace); + for (var i = 0; i < count; i++) { + var key = unserialize(reader); + var value = unserialize(reader); + map.set(key, value); + } + stream.skip(1); + return map; + } + function readHarmonyMap(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagMap: return readHarmonyMapWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readObjectWithoutTag(reader) { + var stream = reader.stream; + var cls = reader.classref[readInt(stream, Tags.TagOpenbrace)]; + var obj = new cls.classname(); + reader.refer.set(obj); + for (var i = 0; i < cls.count; i++) { + obj[cls.fields[i]] = unserialize(reader); + } + stream.skip(1); + return obj; + } + function readObject(reader) { + var tag = reader.stream.readByte(); + switch(tag) { + case Tags.TagNull: return null; + case Tags.TagClass: readClass(reader); return readObject(reader); + case Tags.TagObject: return readObjectWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readClass(reader) { + var stream = reader.stream; + var classname = _readString(reader); + var count = readInt(stream, Tags.TagOpenbrace); + var fields = []; + for (var i = 0; i < count; i++) { + fields[i] = readString(reader); + } + stream.skip(1); + classname = getClass(classname); + reader.classref.push({ + classname: classname, + count: count, + fields: fields + }); + } + function readRef(reader) { + return reader.refer.read(readInt(reader.stream, Tags.TagSemicolon)); + } + + function Reader(stream, simple, useHarmonyMap) { + RawReader.call(this, stream); + this.useHarmonyMap = !!useHarmonyMap; + Object.defineProperties(this, { + classref: { value: [] }, + refer: { value: simple ? fakeReaderRefer : realReaderRefer() } + }); + } + + Reader.prototype = Object.create(RawReader.prototype); + Reader.prototype.constructor = Reader; + + Object.defineProperties(Reader.prototype, { + useHarmonyMap: { value: false, writable: true }, + checkTag: { value: function(expectTag, tag) { + if (tag === undefined) { tag = this.stream.readByte(); } + if (tag !== expectTag) { unexpectedTag(tag, expectTag); } + } }, + checkTags: { value: function(expectTags, tag) { + if (tag === undefined) { tag = this.stream.readByte(); } + if (expectTags.indexOf(tag) >= 0) { return tag; } + unexpectedTag(tag, expectTags); + } }, + unserialize: { value: function() { + return unserialize(this); + } }, + readInteger: { value: function() { + return readInteger(this.stream); + } }, + readLong: { value: function() { + return readLong(this.stream); + } }, + readDouble: { value: function() { + return readDouble(this.stream); + } }, + readBoolean: { value: function() { + return readBoolean(this.stream); + } }, + readDateWithoutTag: { value: function() { + return readDateWithoutTag(this); + } }, + readDate: { value: function() { + return readDate(this); + } }, + readTimeWithoutTag: { value: function() { + return readTimeWithoutTag(this); + } }, + readTime: { value: function() { + return readTime(this); + } }, + readBytesWithoutTag: { value: function() { + return readBytesWithoutTag(this); + } }, + readBytes: { value: function() { + return readBytes(this); + } }, + readStringWithoutTag: { value: function() { + return readStringWithoutTag(this); + } }, + readString: { value: function() { + return readString(this); + } }, + readGuidWithoutTag: { value: function() { + return readGuidWithoutTag(this); + } }, + readGuid: { value: function() { + return readGuid(this); + } }, + readListWithoutTag: { value: function() { + return readListWithoutTag(this); + } }, + readList: { value: function() { + return readList(this); + } }, + readMapWithoutTag: { value: function() { + return this.useHarmonyMap ? + readHarmonyMapWithoutTag(this) : + readMapWithoutTag(this); + } }, + readMap: { value: function() { + return this.useHarmonyMap ? + readHarmonyMap(this) : + readMap(this); + } }, + readObjectWithoutTag: { value: function() { + return readObjectWithoutTag(this); + } }, + readObject: { value: function() { + return readObject(this); + } }, + reset: { value: function() { + this.classref.length = 0; + this.refer.reset(); + } } + }); + + global.hprose.Reader = Reader; +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Formatter.js * + * * + * hprose Formatter for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + var BytesIO = global.hprose.BytesIO; + var Writer = global.hprose.Writer; + var Reader = global.hprose.Reader; + + function serialize(value, simple) { + var stream = new BytesIO(); + var writer = new Writer(stream, simple); + writer.serialize(value); + return stream; + } + + function unserialize(stream, simple, useHarmonyMap) { + if (!(stream instanceof BytesIO)) { + stream = new BytesIO(stream); + } + return new Reader(stream, simple, useHarmonyMap).unserialize(); + } + + global.hprose.Formatter = { + serialize: function (value, simple) { + return serialize(value, simple).bytes; + }, + unserialize: unserialize + }; + + global.hprose.serialize = serialize; + + global.hprose.unserialize = unserialize; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * ResultMode.js * + * * + * hprose ResultMode for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + global.hprose.ResultMode = { + Normal: 0, + Serialized: 1, + Raw: 2, + RawWithEndTag: 3 + }; + global.hprose.Normal = global.hprose.ResultMode.Normal; + global.hprose.Serialized = global.hprose.ResultMode.Serialized; + global.hprose.Raw = global.hprose.ResultMode.Raw; + global.hprose.RawWithEndTag = global.hprose.ResultMode.RawWithEndTag; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * Client.js * + * * + * hprose client for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var setImmediate = global.setImmediate; + var Tags = global.hprose.Tags; + var ResultMode = global.hprose.ResultMode; + var BytesIO = global.hprose.BytesIO; + var Writer = global.hprose.Writer; + var Reader = global.hprose.Reader; + var Future = global.hprose.Future; + + var GETFUNCTIONS = new Uint8Array(1); + GETFUNCTIONS[0] = Tags.TagEnd; + + function noop(){} + + var s_boolean = 'boolean'; + var s_string = 'string'; + var s_number = 'number'; + var s_function = 'function'; + var s_object = 'object'; + + function Client(uri, functions, settings) { + + // private members + var _uri, + _uris = [], + _index = -1, + _byref = false, + _simple = false, + _timeout = 30000, + _retry = 10, + _idempotent = false, + _failswitch = false, + _lock = false, + _tasks = [], + _useHarmonyMap = false, + _onerror = noop, + _filters = [], + _batch = false, + _batches = [], + _ready = new Future(), + _topics = Object.create(null), + _id = null, + _keepAlive = true, + _invokeHandler = invokeHandler, + _batchInvokeHandler = batchInvokeHandler, + _beforeFilterHandler = beforeFilterHandler, + _afterFilterHandler = afterFilterHandler, + _invokeHandlers = [], + _batchInvokeHandlers = [], + _beforeFilterHandlers = [], + _afterFilterHandlers = [], + + self = this; + + function outputFilter(request, context) { + for (var i = 0, n = _filters.length; i < n; i++) { + request = _filters[i].outputFilter(request, context); + } + return request; + } + + function inputFilter(response, context) { + for (var i = _filters.length - 1; i >= 0; i--) { + response = _filters[i].inputFilter(response, context); + } + return response; + } + + function beforeFilterHandler(request, context) { + request = outputFilter(request, context); + return _afterFilterHandler(request, context) + .then(function(response) { + if (context.oneway) { return; } + return inputFilter(response, context); + }); + } + + function afterFilterHandler(request, context) { + return self.sendAndReceive(request, context); + } + + function sendAndReceive(request, context, onsuccess, onerror) { + _beforeFilterHandler(request, context) + .then(onsuccess, function(e) { + if (retry(request, context, onsuccess, onerror)) { return; } + onerror(e); + }); + } + + function retry(data, context, onsuccess, onerror) { + if (context.failswitch) { + if (++_index >= _uris.length) { + _index = 0; + _uri = _uris[_index]; + } + } + if (context.idempotent) { + if (--context.retry >= 0) { + var interval = (context.retry >= 10) ? 500 : (10 - context.retry) * 500; + global.setTimeout(function() { + sendAndReceive(data, context, onsuccess, onerror); + }, interval); + return true; + } + } + return false; + } + + function initService(stub) { + var context = { + retry: _retry, + idempotent: true, + failswitch: true, + timeout: _timeout, + client: self, + userdata: {} + }; + var onsuccess = function(data) { + var error = null; + try { + var stream = new BytesIO(data); + var reader = new Reader(stream, true); + var tag = stream.readByte(); + switch (tag) { + case Tags.TagError: + error = new Error(reader.readString()); + break; + case Tags.TagFunctions: + var functions = reader.readList(); + reader.checkTag(Tags.TagEnd); + setFunctions(stub, functions); + break; + default: + error = new Error('Wrong Response:\r\n' + BytesIO.toString(data)); + break; + } + } + catch (e) { + error = e; + } + if (error !== null) { + _ready.reject(error); + } + else { + _ready.resolve(stub); + } + }; + sendAndReceive(GETFUNCTIONS, context, onsuccess, _ready.reject); + } + + function setFunction(stub, name) { + return function() { + if (_batch) { + return _invoke(stub, name, Array.slice(arguments), true); + } + else { + return Future.all(arguments).then(function(args) { + return _invoke(stub, name, args, false); + }); + } + }; + } + + function setMethods(stub, obj, namespace, name, methods) { + if (obj[name] !== undefined) { return; } + obj[name] = {}; + if (typeof(methods) === s_string || methods.constructor === Object) { + methods = [methods]; + } + if (Array.isArray(methods)) { + for (var i = 0; i < methods.length; i++) { + var m = methods[i]; + if (typeof(m) === s_string) { + obj[name][m] = setFunction(stub, namespace + name + '_' + m); + } + else { + for (var n in m) { + setMethods(stub, obj[name], name + '_', n, m[n]); + } + } + } + } + } + + function setFunctions(stub, functions) { + for (var i = 0; i < functions.length; i++) { + var f = functions[i]; + if (typeof(f) === s_string) { + if (stub[f] === undefined) { + stub[f] = setFunction(stub, f); + } + } + else { + for (var name in f) { + setMethods(stub, stub, '', name, f[name]); + } + } + } + } + + function copyargs(src, dest) { + var n = Math.min(src.length, dest.length); + for (var i = 0; i < n; ++i) { dest[i] = src[i]; } + } + + function initContext(batch) { + if (batch) { + return { + mode: ResultMode.Normal, + byref: _byref, + simple: _simple, + onsuccess: undefined, + onerror: undefined, + useHarmonyMap: _useHarmonyMap, + client: self, + userdata: {} + }; + } + return { + mode: ResultMode.Normal, + byref: _byref, + simple: _simple, + timeout: _timeout, + retry: _retry, + idempotent: _idempotent, + failswitch: _failswitch, + oneway: false, + sync: false, + onsuccess: undefined, + onerror: undefined, + useHarmonyMap: _useHarmonyMap, + client: self, + userdata: {} + }; + } + + function getContext(stub, name, args, batch) { + var context = initContext(batch); + if (name in stub) { + var method = stub[name]; + for (var key in method) { + if (key in context) { + context[key] = method[key]; + } + } + } + var i = 0, n = args.length; + for (; i < n; ++i) { + if (typeof args[i] === s_function) { break; } + } + if (i === n) { return context; } + var extra = args.splice(i, n - i); + context.onsuccess = extra[0]; + n = extra.length; + for (i = 1; i < n; ++i) { + var arg = extra[i]; + switch (typeof arg) { + case s_function: + context.onerror = arg; break; + case s_boolean: + context.byref = arg; break; + case s_number: + context.mode = arg; break; + case s_object: + for (var k in arg) { + if (k in context) { + context[k] = arg[k]; + } + } + break; + } + } + return context; + } + + function encode(name, args, context) { + var stream = new BytesIO(); + stream.writeByte(Tags.TagCall); + var writer = new Writer(stream, context.simple); + writer.writeString(name); + if (args.length > 0 || context.byref) { + writer.reset(); + writer.writeList(args); + if (context.byref) { + writer.writeBoolean(true); + } + } + return stream; + } + + function __invoke(name, args, context, batch) { + if (_lock) { + return Future.promise(function(resolve, reject) { + _tasks.push({ + batch: batch, + name: name, + args: args, + context: context, + resolve: resolve, + reject: reject + }); + }); + } + if (batch) { + return multicall(name, args, context); + } + return call(name, args, context); + } + + function _invoke(stub, name, args, batch) { + return __invoke(name, args, getContext(stub, name, args, batch), batch); + } + + function errorHandling(name, error, context, reject) { + try { + if (context.onerror) { + context.onerror(name, error); + } + else { + _onerror(name, error); + } + reject(error); + } + catch (e) { + reject(e); + } + } + + function invokeHandler(name, args, context) { + var request = encode(name, args, context); + request.writeByte(Tags.TagEnd); + return Future.promise(function(resolve, reject) { + sendAndReceive(request.bytes, context, function(response) { + if (context.oneway) { + resolve(); + return; + } + var result = null; + var error = null; + try { + if (context.mode === ResultMode.RawWithEndTag) { + result = response; + } + else if (context.mode === ResultMode.Raw) { + result = response.subarray(0, response.byteLength - 1); + } + else { + var stream = new BytesIO(response); + var reader = new Reader(stream, false, context.useHarmonyMap); + var tag = stream.readByte(); + if (tag === Tags.TagResult) { + if (context.mode === ResultMode.Serialized) { + result = reader.readRaw(); + } + else { + result = reader.unserialize(); + } + tag = stream.readByte(); + if (tag === Tags.TagArgument) { + reader.reset(); + var _args = reader.readList(); + copyargs(_args, args); + tag = stream.readByte(); + } + } + else if (tag === Tags.TagError) { + error = new Error(reader.readString()); + tag = stream.readByte(); + } + if (tag !== Tags.TagEnd) { + error = new Error('Wrong Response:\r\n' + BytesIO.toString(response)); + } + } + } + catch (e) { + error = e; + } + if (error) { + reject(error); + } + else { + resolve(result); + } + }, reject); + }); + } + + function unlock(sync) { + return function() { + if (sync) { + _lock = false; + setImmediate(function(tasks) { + tasks.forEach(function(task) { + if ('settings' in task) { + endBatch(task.settings) + .then(task.resolve, task.reject); + } + else { + __invoke(task.name, task.args, task.context, task.batch).then(task.resolve, task.reject); + } + }); + }, _tasks); + _tasks = []; + } + }; + } + + function call(name, args, context) { + if (context.sync) { _lock = true; } + var promise = Future.promise(function(resolve, reject) { + _invokeHandler(name, args, context).then(function(result) { + try { + if (context.onsuccess) { + try { + context.onsuccess(result, args); + } + catch (e) { + if (context.onerror) { + context.onerror(name, e); + } + reject(e); + } + } + resolve(result); + } + catch (e) { + reject(e); + } + }, function(error) { + errorHandling(name, error, context, reject); + }); + }); + promise.whenComplete(unlock(context.sync)); + return promise; + } + + function multicall(name, args, context) { + return Future.promise(function(resolve, reject) { + _batches.push({ + args: args, + name: name, + context: context, + resolve: resolve, + reject: reject + }); + }); + } + + function getBatchContext(settings) { + var context = { + timeout: _timeout, + retry: _retry, + idempotent: _idempotent, + failswitch: _failswitch, + oneway: false, + sync: false, + client: self, + userdata: {} + }; + for (var k in settings) { + if (k in context) { + context[k] = settings[k]; + } + } + return context; + } + + function batchInvokeHandler(batches, context) { + var request = batches.reduce(function(stream, item) { + stream.write(encode(item.name, item.args, item.context)); + return stream; + }, new BytesIO()); + request.writeByte(Tags.TagEnd); + return Future.promise(function(resolve, reject) { + sendAndReceive(request.bytes, context, function(response) { + if (context.oneway) { + resolve(batches); + return; + } + var i = -1; + var stream = new BytesIO(response); + var reader = new Reader(stream, false); + var tag = stream.readByte(); + try { + while (tag !== Tags.TagEnd) { + var result = null; + var error = null; + var mode = batches[++i].context.mode; + if (mode >= ResultMode.Raw) { + result = new BytesIO(); + } + if (tag === Tags.TagResult) { + if (mode === ResultMode.Serialized) { + result = reader.readRaw(); + } + else if (mode >= ResultMode.Raw) { + result.writeByte(Tags.TagResult); + result.write(reader.readRaw()); + } + else { + reader.useHarmonyMap = batches[i].context.useHarmonyMap; + reader.reset(); + result = reader.unserialize(); + } + tag = stream.readByte(); + if (tag === Tags.TagArgument) { + if (mode >= ResultMode.Raw) { + result.writeByte(Tags.TagArgument); + result.write(reader.readRaw()); + } + else { + reader.reset(); + var _args = reader.readList(); + copyargs(_args, batches[i].args); + } + tag = stream.readByte(); + } + } + else if (tag === Tags.TagError) { + if (mode >= ResultMode.Raw) { + result.writeByte(Tags.TagError); + result.write(reader.readRaw()); + } + else { + reader.reset(); + error = new Error(reader.readString()); + } + tag = stream.readByte(); + } + if ([Tags.TagEnd, + Tags.TagResult, + Tags.TagError].indexOf(tag) < 0) { + reject(new Error('Wrong Response:\r\n' + BytesIO.toString(response))); + return; + } + if (mode >= ResultMode.Raw) { + if (mode === ResultMode.RawWithEndTag) { + result.writeByte(Tags.TagEnd); + } + batches[i].result = result.bytes; + } + else { + batches[i].result = result; + } + batches[i].error = error; + } + } + catch (e) { + reject(e); + return; + } + resolve(batches); + }, reject); + }); + } + + function beginBatch() { + _batch = true; + } + + function endBatch(settings) { + settings = settings || {}; + _batch = false; + if (_lock) { + return Future.promise(function(resolve, reject) { + _tasks.push({ + batch: true, + settings: settings, + resolve: resolve, + reject: reject + }); + }); + } + var batchSize = _batches.length; + if (batchSize === 0) { return Future.value([]); } + var context = getBatchContext(settings); + if (context.sync) { _lock = true; } + var batches = _batches; + _batches = []; + var promise = Future.promise(function(resolve, reject) { + _batchInvokeHandler(batches, context).then(function(batches) { + batches.forEach(function(i) { + if (i.error) { + errorHandling(i.name, i.error, i.context, i.reject); + } + else { + try { + if (i.context.onsuccess) { + try { + i.context.onsuccess(i.result, i.args); + } + catch (e) { + if (i.context.onerror) { + i.context.onerror(i.name, e); + } + i.reject(e); + } + } + i.resolve(i.result); + } + catch (e) { + i.reject(e); + } + } + delete i.context; + delete i.resolve; + delete i.reject; + }); + resolve(batches); + }, function(error) { + batches.forEach(function(i) { + if ('reject' in i) { + errorHandling(i.name, error, i.context, i.reject); + } + }); + reject(error); + }); + }); + promise.whenComplete(unlock(context.sync)); + return promise; + } + + function getOnError() { + return _onerror; + } + function setOnError(value) { + if (typeof(value) === s_function) { + _onerror = value; + } + } + function getUri() { + return _uri; + } + function getFailswitch() { + return _failswitch; + } + function setFailswitch(value) { + _failswitch = !!value; + } + function getTimeout() { + return _timeout; + } + function setTimeout(value) { + if (typeof(value) === 'number') { + _timeout = value | 0; + } + else { + _timeout = 0; + } + } + function getRetry() { + return _retry; + } + function setRetry(value) { + if (typeof(value) === 'number') { + _retry = value | 0; + } + else { + _retry = 0; + } + } + function getIdempotent() { + return _idempotent; + } + function setIdempotent(value) { + _idempotent = !!value; + } + function setKeepAlive(value) { + _keepAlive = !!value; + } + function getKeepAlive() { + return _keepAlive; + } + function getByRef() { + return _byref; + } + function setByRef(value) { + _byref = !!value; + } + function getSimpleMode() { + return _simple; + } + function setSimpleMode(value) { + _simple = !!value; + } + function getUseHarmonyMap() { + return _useHarmonyMap; + } + function setUseHarmonyMap(value) { + _useHarmonyMap = !!value; + } + function getFilter() { + if (_filters.length === 0) { + return null; + } + if (_filters.length === 1) { + return _filters[0]; + } + return _filters.slice(); + } + function setFilter(filter) { + _filters.length = 0; + if (Array.isArray(filter)) { + filter.forEach(function(filter) { + addFilter(filter); + }); + } + else { + addFilter(filter); + } + } + function addFilter(filter) { + if (filter && + typeof filter.inputFilter === 'function' && + typeof filter.outputFilter === 'function') { + _filters.push(filter); + } + } + function removeFilter(filter) { + var i = _filters.indexOf(filter); + if (i === -1) { + return false; + } + _filters.splice(i, 1); + return true; + } + function filters() { + return _filters; + } + function useService(uri, functions, create) { + if (create === undefined) { + if (typeof(functions) === s_boolean) { + create = functions; + functions = false; + } + if (!functions) { + if (typeof(uri) === s_boolean) { + create = uri; + uri = false; + } + else if (uri && uri.constructor === Object || + Array.isArray(uri)) { + functions = uri; + uri = false; + } + } + } + var stub = self; + if (create) { + stub = {}; + } + if (!uri && !_uri) { + return new Error('You should set server uri first!'); + } + if (uri) { + _uri = uri; + } + if (typeof(functions) === s_string || + (functions && functions.constructor === Object)) { + functions = [functions]; + } + if (!Array.isArray(functions)) { + setImmediate(initService, stub); + return _ready; + } + setFunctions(stub, functions); + _ready.resolve(stub); + return stub; + } + function invoke(name, args, onsuccess/*, onerror, settings*/) { + var argc = arguments.length; + if ((argc < 1) || (typeof name !== s_string)) { + throw new Error('name must be a string'); + } + if (argc === 1) { args = []; } + if (argc === 2) { + if (!Array.isArray(args)) { + var _args = []; + if (typeof args !== s_function) { + _args.push(noop); + } + _args.push(args); + args = _args; + } + } + if (argc > 2) { + if (typeof onsuccess !== s_function) { + args.push(noop); + } + for (var i = 2; i < argc; i++) { + args.push(arguments[i]); + } + } + return _invoke(self, name, args, _batch); + } + function ready(onComplete, onError) { + return _ready.then(onComplete, onError); + } + function getTopic(name, id, create) { + if (_topics[name]) { + var topics = _topics[name]; + if (topics[id]) { + return topics[id]; + } + return null; + } + if (create) { + _topics[name] = Object.create(null); + } + return null; + } + // subscribe(name, callback, timeout) + // subscribe(name, id, callback, timeout) + function subscribe(name, id, callback, timeout) { + if (typeof name !== s_string) { + throw new TypeError('topic name must be a string.'); + } + if (id === undefined || id === null) { + if (typeof callback === s_function) { + id = callback; + } + else { + throw new TypeError('callback must be a function.'); + } + } + if (typeof id === s_function) { + timeout = callback; + callback = id; + if (_id === null) { + _id = autoId(); + } + _id.then(function(id) { + subscribe(name, id, callback, timeout); + }); + return; + } + if (typeof callback !== s_function) { + throw new TypeError('callback must be a function.'); + } + if (Future.isPromise(id)) { + id.then(function(id) { + subscribe(name, id, callback, timeout); + }); + return; + } + if (timeout === undefined) { timeout = _timeout; } + var topic = getTopic(name, id, true); + if (topic === null) { + var cb = function() { + _invoke(self, name, [id, topic.handler, cb, { + idempotent: true, + failswitch: false, + timeout: timeout + }], false); + }; + topic = { + handler: function(result) { + var topic = getTopic(name, id, false); + if (topic) { + if (result !== null) { + var callbacks = topic.callbacks; + for (var i = 0, n = callbacks.length; i < n; ++i) { + try { + callbacks[i](result); + } + catch (e) {} + } + } + if (getTopic(name, id, false) !== null) { cb(); } + } + }, + callbacks: [callback] + }; + _topics[name][id] = topic; + cb(); + } + else if (topic.callbacks.indexOf(callback) < 0) { + topic.callbacks.push(callback); + } + } + function delTopic(topics, id, callback) { + if (topics) { + if (typeof callback === s_function) { + var topic = topics[id]; + if (topic) { + var callbacks = topic.callbacks; + var p = callbacks.indexOf(callback); + if (p >= 0) { + callbacks[p] = callbacks[callbacks.length - 1]; + callbacks.length--; + } + if (callbacks.length === 0) { + delete topics[id]; + } + } + } + else { + delete topics[id]; + } + } + } + // unsubscribe(name) + // unsubscribe(name, callback) + // unsubscribe(name, id) + // unsubscribe(name, id, callback) + function unsubscribe(name, id, callback) { + if (typeof name !== s_string) { + throw new TypeError('topic name must be a string.'); + } + if (id === undefined || id === null) { + if (typeof callback === s_function) { + id = callback; + } + else { + delete _topics[name]; + return; + } + } + if (typeof id === s_function) { + callback = id; + id = null; + } + if (id === null) { + if (_id === null) { + if (_topics[name]) { + var topics = _topics[name]; + for (id in topics) { + delTopic(topics, id, callback); + } + } + } + else { + _id.then(function(id) { + unsubscribe(name, id, callback); + }); + } + } + else if (Future.isPromise(id)) { + id.then(function(id) { + unsubscribe(name, id, callback); + }); + } + else { + delTopic(_topics[name], id, callback); + } + } + function getId() { + return _id; + } + function autoId() { + return _invoke(self, '#', [], false); + } + autoId.sync = true; + autoId.idempotent = true; + autoId.failswitch = true; + function addInvokeHandler(handler) { + _invokeHandlers.push(handler); + _invokeHandler = _invokeHandlers.reduceRight( + function(next, handler) { + return function(name, args, context) { + try { + var result = handler(name, args, context, next); + if (Future.isFuture(result)) { return result; } + return Future.value(result); + } + catch (e) { + return Future.error(e); + } + }; + }, invokeHandler); + } + function addBatchInvokeHandler(handler) { + _batchInvokeHandlers.push(handler); + _batchInvokeHandler = _batchInvokeHandlers.reduceRight( + function(next, handler) { + return function(batches, context) { + try { + var result = handler(batches, context, next); + if (Future.isFuture(result)) { return result; } + return Future.value(result); + } + catch (e) { + return Future.error(e); + } + }; + }, batchInvokeHandler); + } + function addBeforeFilterHandler(handler) { + _beforeFilterHandlers.push(handler); + _beforeFilterHandler = _beforeFilterHandlers.reduceRight( + function(next, handler) { + return function(request, context) { + try { + var response = handler(request, context, next); + if (Future.isFuture(response)) { return response; } + return Future.value(response); + } + catch (e) { + return Future.error(e); + } + }; + }, beforeFilterHandler); + } + function addAfterFilterHandler(handler) { + _afterFilterHandlers.push(handler); + _afterFilterHandler = _afterFilterHandlers.reduceRight( + function(next, handler) { + return function(request, context) { + try { + var response = handler(request, context, next); + if (Future.isFuture(response)) { return response; } + return Future.value(response); + } + catch (e) { + return Future.error(e); + } + }; + }, afterFilterHandler); + } + function use(handler) { + addInvokeHandler(handler); + return self; + } + var batch = Object.create(null, { + begin: { value: beginBatch }, + end: { value: endBatch }, + use: { value: function(handler) { + addBatchInvokeHandler(handler); + return batch; + } } + }); + var beforeFilter = Object.create(null, { + use: { value: function(handler) { + addBeforeFilterHandler(handler); + return beforeFilter; + } } + }); + var afterFilter = Object.create(null, { + use: { value: function(handler) { + addAfterFilterHandler(handler); + return afterFilter; + } } + }); + Object.defineProperties(this, { + '#': { value: autoId }, + onerror: { get: getOnError, set: setOnError }, + uri: { get: getUri }, + id: { get: getId }, + failswitch: { get: getFailswitch, set: setFailswitch }, + timeout: { get: getTimeout, set: setTimeout }, + retry: { get: getRetry, set: setRetry }, + idempotent: { get: getIdempotent, set: setIdempotent }, + keepAlive: { get: getKeepAlive, set: setKeepAlive }, + byref: { get: getByRef, set: setByRef }, + simple: { get: getSimpleMode, set: setSimpleMode }, + useHarmonyMap: { get: getUseHarmonyMap, set: setUseHarmonyMap }, + filter: { get: getFilter, set: setFilter }, + addFilter: { value: addFilter }, + removeFilter: { value: removeFilter }, + filters: { get: filters }, + useService: { value: useService }, + invoke: { value: invoke }, + ready: { value: ready }, + subscribe: { value: subscribe }, + unsubscribe: { value: unsubscribe }, + use: { value: use }, + batch: { value: batch }, + beforeFilter: { value: beforeFilter }, + afterFilter: { value: afterFilter } + }); + /* function constructor */ { + if ((settings) && (typeof settings === s_object)) { + ['failswitch', 'timeout', 'retry', 'idempotent', + 'keepAlive', 'byref', 'simple','useHarmonyMap', + 'filter'].forEach(function(key) { + if (key in settings) { + self[key] = settings[key]; + } + }); + } + if (typeof(uri) === s_string) { + _uris = [uri]; + _index = 0; + useService(uri, functions); + } + else if (Array.isArray(uri)) { + _uris = uri; + _index = Math.floor(Math.random() * _uris.length); + useService(_uris[_index], functions); + } + } + } + + function checkuri(uri) { + var parser = document.createElement('a'); + parser.href = uri; + var protocol = parser.protocol; + if (protocol === 'http:' || + protocol === 'https:' || + protocol === 'tcp:' || + protocol === 'tcp4:'|| + protocol === 'tcp6:' || + protocol === 'tcps:' || + protocol === 'tcp4s:' || + protocol === 'tcp6s:' || + protocol === 'tls:' || + protocol === 'ws:' || + protocol === 'wss:') { + return; + } + throw new Error('The ' + protocol + ' client isn\'t implemented.'); + } + + function create(uri, functions, settings) { + try { + return global.hprose.HttpClient.create(uri, functions, settings); + } + catch(e) {} + try { + return global.hprose.TcpClient.create(uri, functions, settings); + } + catch(e) {} + try { + return global.hprose.WebSocketClient.create(uri, functions, settings); + } + catch(e) {} + if (typeof uri === 'string') { + checkuri(uri); + } + else if (Array.isArray(uri)) { + uri.forEach(function(uri) { checkuri(uri); }); + throw new Error('Not support multiple protocol.'); + } + throw new Error('You should set server uri first!'); + } + + Object.defineProperty(Client, 'create', { value: create }); + + global.hprose.Client = Client; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * HttpClient.js * + * * + * hprose http client for HTML5. * + * * + * LastModified: Feb 28, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Client = global.hprose.Client; + var Future = global.hprose.Future; + var BytesIO = global.hprose.BytesIO; + var TimeoutError = global.TimeoutError; + + function noop(){} + + function HttpClient(uri, functions, settings) { + if (this.constructor !== HttpClient) { + return new HttpClient(uri, functions, settings); + } + Client.call(this, uri, functions, settings); + var _header = Object.create(null); + var _onreqprogress = noop; + var _onresprogress = noop; + + var self = this; + + function xhrPost(request, env) { + var future = new Future(); + var xhr = new XMLHttpRequest(); + xhr.open('POST', self.uri, true); + if (global.location !== undefined && global.location.protocol !== 'file:') { + xhr.withCredentials = 'true'; + } + xhr.responseType = 'arraybuffer'; + for (var name in _header) { + xhr.setRequestHeader(name, _header[name]); + } + xhr.onload = function() { + xhr.onload = noop; + if (xhr.status) { + if (xhr.status === 200) { + future.resolve(new Uint8Array(xhr.response)); + } + else { + future.reject(new Error(xhr.status + ':' + xhr.statusText)); + } + } + }; + xhr.onerror = function() { + future.reject(new Error('error')); + }; + if (xhr.upload !== undefined) { + xhr.upload.onprogress = _onreqprogress; + } + xhr.onprogress = _onresprogress; + if (env.timeout > 0) { + future = future.timeout(env.timeout).catchError(function(e) { + xhr.onload = noop; + xhr.onerror = noop; + xhr.abort(); + throw e; + }, + function(e) { + return e instanceof TimeoutError; + }); + } + if (request.constructor === String || ArrayBuffer.isView) { + xhr.send(request); + } + else if (request.buffer.slice) { + xhr.send(request.buffer.slice(0, request.length)); + } + else { + var buf = new Uint8Array(request.length); + buf.set(request); + xhr.send(buf.buffer); + } + return future; + } + + function apiPost(request, env) { + var future = new Future(); + global.api.ajax({ + url: self.uri(), + method: 'post', + data: { body: BytesIO.toString(request) }, + timeout: env.timeout, + dataType: 'text', + headers: _header, + certificate: self.certificate + }, function(ret, err) { + if (ret) { + future.resolve((new BytesIO(ret)).takeBytes()); + } + else { + future.reject(new Error(err.msg)); + } + }); + return future; + } + + function sendAndReceive(request, env) { + var apicloud = (typeof(global.api) !== "undefined" && + typeof(global.api.ajax) !== "undefined"); + var future = apicloud ? apiPost(request, env) : + xhrPost(request, env); + if (env.oneway) { future.resolve(); } + return future; + } + + function setOnRequestProgress(value) { + if (typeof(value) === 'function') { + _onreqprogress = value; + } + } + function getOnRequestProgress() { + return _onreqprogress; + } + function setOnResponseProgress(value) { + if (typeof(value) === 'function') { + _onresprogress = value; + } + } + function getOnResponseProgress() { + return _onresprogress; + } + function setHeader(name, value) { + if (name.toLowerCase() !== 'content-type' && + name.toLowerCase() !== 'content-length') { + if (value) { + _header[name] = value; + } + else { + delete _header[name]; + } + } + } + Object.defineProperties(this, { + onprogress: { get: getOnRequestProgress, set: setOnRequestProgress }, + onRequestProgress: { get: getOnRequestProgress, set: setOnRequestProgress }, + onResponseProgress: { get: getOnResponseProgress, set: setOnResponseProgress }, + setHeader: { value: setHeader }, + sendAndReceive: { value: sendAndReceive } + }); + } + + function checkuri(uri) { + var parser = document.createElement('a'); + parser.href = uri; + if (parser.protocol === 'http:' || + parser.protocol === 'https:') { + return; + } + throw new Error('This client desn\'t support ' + parser.protocol + ' scheme.'); + } + + function create(uri, functions, settings) { + if (typeof uri === 'string') { + checkuri(uri); + } + else if (Array.isArray(uri)) { + uri.forEach(function(uri) { checkuri(uri); }); + } + else { + throw new Error('You should set server uri first!'); + } + return new HttpClient(uri, functions, settings); + } + + Object.defineProperty(HttpClient, 'create', { value: create }); + + global.hprose.HttpClient = HttpClient; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * WebSocketClient.js * + * * + * hprose websocket client for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var BytesIO = global.hprose.BytesIO; + var Client = global.hprose.Client; + var Future = global.hprose.Future; + var TimeoutError = global.TimeoutError; + + var WebSocket = global.WebSocket || global.MozWebSocket; + + function noop(){} + function WebSocketClient(uri, functions, settings) { + if (typeof(WebSocket) === "undefined") { + throw new Error('WebSocket is not supported by this browser.'); + } + if (this.constructor !== WebSocketClient) { + return new WebSocketClient(uri, functions, settings); + } + + Client.call(this, uri, functions, settings); + + var _id = 0; + var _count = 0; + var _futures = []; + var _requests = []; + var _ready = null; + var ws = null; + + var self = this; + + function getNextId() { + return (_id < 0x7fffffff) ? ++_id : _id = 0; + } + function send(id, request) { + var bytes = new BytesIO(); + bytes.writeInt32BE(id); + if (request.constructor === String) { + bytes.writeString(request); + } + else { + bytes.write(request); + } + var message = bytes.bytes; + if (ArrayBuffer.isView) { + ws.send(message); + } + else if (message.buffer.slice) { + ws.send(message.buffer.slice(0, message.length)); + } + else { + ws.send(message.buffer); + } + } + function onopen(e) { + _ready.resolve(e); + } + function onmessage(e) { + var bytes = new BytesIO(e.data); + var id = bytes.readInt32BE(); + var future = _futures[id]; + delete _futures[id]; + if (future !== undefined) { + --_count; + future.resolve(bytes.read(bytes.length - 4)); + } + if ((_count < 100) && (_requests.length > 0)) { + ++_count; + var request = _requests.shift(); + _ready.then(function() { send(request[0], request[1]); }); + } + if (_count === 0 && !self.keepAlive) { + close(); + } + } + function onclose(e) { + _futures.forEach(function(future, id) { + future.reject(new Error(e.code + ':' + e.reason)); + delete _futures[id]; + }); + _count = 0; + ws = null; + } + function connect() { + _ready = new Future(); + ws = new WebSocket(self.uri); + ws.binaryType = 'arraybuffer'; + ws.onopen = onopen; + ws.onmessage = onmessage; + ws.onerror = noop; + ws.onclose = onclose; + } + function sendAndReceive(request, env) { + if (ws === null || + ws.readyState === WebSocket.CLOSING || + ws.readyState === WebSocket.CLOSED) { + connect(); + } + var id = getNextId(); + var future = new Future(); + _futures[id] = future; + if (env.timeout > 0) { + future = future.timeout(env.timeout).catchError(function(e) { + delete _futures[id]; + --_count; + throw e; + }, + function(e) { + return e instanceof TimeoutError; + }); + } + if (_count < 100) { + ++_count; + _ready.then(function() { send(id, request); }); + } + else { + _requests.push([id, request]); + } + if (env.oneway) { future.resolve(); } + return future; + } + function close() { + if (ws !== null) { + ws.onopen = noop; + ws.onmessage = noop; + ws.onclose = noop; + ws.close(); + } + } + + Object.defineProperties(this, { + sendAndReceive: { value: sendAndReceive }, + close: { value: close } + }); + } + + function checkuri(uri) { + var parser = document.createElement('a'); + parser.href = uri; + if (parser.protocol === 'ws:' || + parser.protocol === 'wss:') { + return; + } + throw new Error('This client desn\'t support ' + parser.protocol + ' scheme.'); + } + + function create(uri, functions, settings) { + if (typeof uri === 'string') { + checkuri(uri); + } + else if (Array.isArray(uri)) { + uri.forEach(function(uri) { checkuri(uri); }); + } + else { + throw new Error('You should set server uri first!'); + } + return new WebSocketClient(uri, functions, settings); + } + + Object.defineProperty(WebSocketClient, 'create', { value: create }); + + global.hprose.WebSocketClient = WebSocketClient; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * ChromeTcpSocket.js * + * * + * chrome tcp socket for JavaScript. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Future = global.hprose.Future; + + function noop(){} + + var socketPool = {}; + var socketManager = null; + + function receiveListener(info) { + var socket = socketPool[info.socketId]; + socket.onreceive(info.data); + } + + function receiveErrorListener(info) { + var socket = socketPool[info.socketId]; + socket.onerror(info.resultCode); + socket.destroy(); + } + + function ChromeTcpSocket() { + if (socketManager === null) { + socketManager = global.chrome.sockets.tcp; + socketManager.onReceive.addListener(receiveListener); + socketManager.onReceiveError.addListener(receiveErrorListener); + } + this.socketId = new Future(); + this.connected = false; + this.timeid = undefined; + this.onclose = noop; + this.onconnect = noop; + this.onreceive = noop; + this.onerror = noop; + } + + Object.defineProperties(ChromeTcpSocket.prototype, { + connect: { value: function(address, port, options) { + var self = this; + socketManager.create({ persistent: options && options.persistent }, function(createInfo) { + if (options) { + if ('noDelay' in options) { + socketManager.setNoDelay(createInfo.socketId, options.noDelay, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + }); + } + if ('keepAlive' in options) { + socketManager.setKeepAlive(createInfo.socketId, options.keepAlive, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + }); + } + } + if (options && options.tls) { + socketManager.setPaused(createInfo.socketId, true, function() { + socketManager.connect(createInfo.socketId, address, port, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + else { + socketManager.secure(createInfo.socketId, function(secureResult) { + if (secureResult !== 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + else { + socketManager.setPaused(createInfo.socketId, false, function() { + self.socketId.resolve(createInfo.socketId); + }); + } + }); + } + }); + }); + } + else { + socketManager.connect(createInfo.socketId, address, port, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + else { + self.socketId.resolve(createInfo.socketId); + } + }); + } + }); + this.socketId.then(function(socketId) { + socketPool[socketId] = self; + self.connected = true; + self.onconnect(socketId); + }, function(reason) { + self.onerror(reason); + }); + } }, + send: { value: function(data) { + var self = this; + var promise = new Future(); + this.socketId.then(function(socketId) { + socketManager.send(socketId, data, function(sendInfo) { + if (sendInfo.resultCode < 0) { + self.onerror(sendInfo.resultCode); + promise.reject(sendInfo.resultCode); + self.destroy(); + } + else { + promise.resolve(sendInfo.bytesSent); + } + }); + }); + return promise; + } }, + destroy: { value: function() { + var self = this; + this.connected = false; + this.socketId.then(function(socketId) { + socketManager.disconnect(socketId); + socketManager.close(socketId); + delete socketPool[socketId]; + self.onclose(); + }); + } }, + ref: { value: function() { + this.socketId.then(function(socketId) { + socketManager.setPaused(socketId, false); + }); + } }, + unref: { value: function() { + this.socketId.then(function(socketId) { + socketManager.setPaused(socketId, true); + }); + } }, + clearTimeout: { value: function() { + if (this.timeid !== undefined) { + global.clearTimeout(this.timeid); + } + } }, + setTimeout: { value: function(timeout, fn) { + this.clearTimeout(); + this.timeid = global.setTimeout(fn, timeout); + } } + }); + + global.hprose.ChromeTcpSocket = ChromeTcpSocket; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * APICloudTcpSocket.js * + * * + * APICloud tcp socket for HTML5. * + * * + * LastModified: Mar 8, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Future = global.hprose.Future; + var atob = global.atob; + var btoa = global.btoa; + var toUint8Array = global.hprose.toUint8Array; + var toBinaryString = global.hprose.toBinaryString; + + function noop(){} + + var socketPool = {}; + var socketManager = null; + + function APICloudTcpSocket() { + if (socketManager === null) { + socketManager = global.api.require('socketManager'); + } + this.socketId = new Future(); + this.connected = false; + this.timeid = undefined; + this.onclose = noop; + this.onconnect = noop; + this.onreceive = noop; + this.onerror = noop; + } + + Object.defineProperties(APICloudTcpSocket.prototype, { + connect: { value: function(address, port, options) { + var self = this; + socketManager.createSocket({ + type: 'tcp', + host: address, + port: port, + timeout: options.timeout, + returnBase64: true + }, + function(ret/*, err*/) { + if (ret) { + switch(ret.state) { + case 101: break; + case 102: self.socketId.resolve(ret.sid); break; + case 103: self.onreceive(toUint8Array(atob(ret.data.replace(/\s+/g, '')))); break; + case 201: self.socketId.reject(new Error('Create TCP socket failed')); break; + case 202: self.socketId.reject(new Error('TCP connection failed')); break; + case 203: self.onclose(); self.onerror(new Error('Abnormal disconnect connection')); break; + case 204: self.onclose(); break; + case 205: self.onclose(); self.onerror(new Error('Unknown error')); break; + } + } + }); + this.socketId.then(function(socketId) { + socketPool[socketId] = self; + self.connected = true; + self.onconnect(socketId); + }, function(reason) { + self.onerror(reason); + }); + } }, + send: { value: function(data) { + var self = this; + var promise = new Future(); + this.socketId.then(function(socketId) { + socketManager.write({ + sid: socketId, + data: btoa(toBinaryString(data)), + base64: true + }, + function(ret, err) { + if (ret.status) { + promise.resolve(); + } + else { + self.onerror(new Error(err.msg)); + promise.reject(err.msg); + self.destroy(); + } + }); + }); + return promise; + } }, + destroy: { value: function() { + var self = this; + this.connected = false; + this.socketId.then(function(socketId) { + socketManager.closeSocket({ + sid: socketId + }, + function(ret, err) { + if (!ret.status) { + self.onerror(new Error(err.msg)); + } + }); + delete socketPool[socketId]; + //self.onclose(); + }); + } }, + ref: { value: noop }, + unref: { value: noop }, + clearTimeout: { value: function() { + if (this.timeid !== undefined) { + global.clearTimeout(this.timeid); + } + } }, + setTimeout: { value: function(timeout, fn) { + this.clearTimeout(); + this.timeid = global.setTimeout(fn, timeout); + } } + }); + + global.hprose.APICloudTcpSocket = APICloudTcpSocket; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * TcpClient.js * + * * + * hprose tcp client for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var ChromeTcpSocket = global.hprose.ChromeTcpSocket; + var APICloudTcpSocket = global.hprose.APICloudTcpSocket; + var Client = global.hprose.Client; + var BytesIO = global.hprose.BytesIO; + var Future = global.hprose.Future; + var TimeoutError = global.TimeoutError; + + function noop(){} + + function setReceiveHandler(socket, onreceive) { + socket.onreceive = function(data) { + if (!('receiveEntry' in socket)) { + socket.receiveEntry = { + stream: new BytesIO(), + headerLength: 4, + dataLength: -1, + id: null + }; + } + var entry = socket.receiveEntry; + var stream = entry.stream; + var headerLength = entry.headerLength; + var dataLength = entry.dataLength; + var id = entry.id; + stream.write(data); + while (true) { + if ((dataLength < 0) && (stream.length >= headerLength)) { + dataLength = stream.readInt32BE(); + if ((dataLength & 0x80000000) !== 0) { + dataLength &= 0x7fffffff; + headerLength = 8; + } + } + if ((headerLength === 8) && (id === null) && (stream.length >= headerLength)) { + id = stream.readInt32BE(); + } + if ((dataLength >= 0) && ((stream.length - headerLength) >= dataLength)) { + onreceive(stream.read(dataLength), id); + headerLength = 4; + id = null; + stream.trunc(); + dataLength = -1; + } + else { + break; + } + } + entry.stream = stream; + entry.headerLength = headerLength; + entry.dataLength = dataLength; + entry.id = id; + }; + } + + function TcpTransporter(client) { + if (client) { + this.client = client; + this.uri = this.client.uri; + this.size = 0; + this.pool = []; + this.requests = []; + } + } + + Object.defineProperties(TcpTransporter.prototype, { + create: { value: function() { + var parser = document.createElement('a'); + parser.href = this.uri; + var protocol = parser.protocol; + // HTMLAnchorElement can't parse TCP protocol + // replace to HTTP can be correctly resolved. + parser.protocol = "http:"; + var address = parser.hostname; + var port = parseInt(parser.port, 10); + var tls; + if (protocol === 'tcp:' || + protocol === 'tcp4:' || + protocol === 'tcp6:') { + tls = false; + } + else if (protocol === 'tcps:' || + protocol === 'tcp4s:' || + protocol === 'tcp6s:' || + protocol === 'tls:') { + tls = true; + } + else { + throw new Error('Unsupported ' + protocol + ' protocol!'); + } + var conn; + if (global.chrome && global.chrome.sockets && global.chrome.sockets.tcp) { + conn = new ChromeTcpSocket(); + } + else if (global.api && global.api.require) { + conn = new APICloudTcpSocket(); + } + else { + throw new Error('TCP Socket is not supported by this browser or platform.'); + } + var self = this; + conn.connect(address, port, { + persistent: true, + tls: tls, + timeout: this.client.timeout, + noDelay: this.client.noDelay, + keepAlive: this.client.keepAlive + }); + conn.onclose = function() { --self.size; }; + ++this.size; + return conn; + } } + }); + + function FullDuplexTcpTransporter(client) { + TcpTransporter.call(this, client); + } + + FullDuplexTcpTransporter.prototype = Object.create( + TcpTransporter.prototype, { + fetch: { value: function() { + var pool = this.pool; + while (pool.length > 0) { + var conn = pool.shift(); + if (conn.connected) { + if (conn.count === 0) { + conn.clearTimeout(); + conn.ref(); + } + return conn; + } + } + return null; + } }, + init: { value: function(conn) { + var self = this; + conn.count = 0; + conn.futures = {}; + conn.timeoutIds = {}; + setReceiveHandler(conn, function(data, id) { + var future = conn.futures[id]; + if (future) { + self.clean(conn, id); + if (conn.count === 0) { + self.recycle(conn); + } + future.resolve(data); + } + }); + conn.onerror = function (e) { + var futures = conn.futures; + for (var id in futures) { + var future = futures[id]; + self.clean(conn, id); + future.reject(e); + } + }; + } }, + recycle: { value: function(conn) { + conn.unref(); + conn.setTimeout(this.client.poolTimeout, function() { + conn.destroy(); + }); + } }, + clean: { value: function(conn, id) { + if (conn.timeoutIds[id] !== undefined) { + global.clearTimeout(conn.timeoutIds[id]); + delete conn.timeoutIds[id]; + } + delete conn.futures[id]; + --conn.count; + this.sendNext(conn); + } }, + sendNext: { value: function(conn) { + if (conn.count < 10) { + if (this.requests.length > 0) { + var request = this.requests.shift(); + request.push(conn); + this.send.apply(this, request); + } + else { + this.pool.push(conn); + } + } + } }, + send: { value: function(request, future, id, env, conn) { + var self = this; + var timeout = env.timeout; + if (timeout > 0) { + conn.timeoutIds[id] = global.setTimeout(function() { + self.clean(conn, id); + if (conn.count === 0) { + self.recycle(conn); + } + future.reject(new TimeoutError('timeout')); + }, timeout); + } + conn.count++; + conn.futures[id] = future; + + var len = request.length; + var buf = new BytesIO(8 + len); + buf.writeInt32BE(len | 0x80000000); + buf.writeInt32BE(id); + buf.write(request); + conn.send(buf.buffer).then(function() { + self.sendNext(conn); + }); + } }, + getNextId: { value: function() { + return (this.nextid < 0x7fffffff) ? ++this.nextid : this.nextid = 0; + } }, + sendAndReceive: { value: function(request, future, env) { + var conn = this.fetch(); + var id = this.getNextId(); + if (conn) { + this.send(request, future, id, env, conn); + } + else if (this.size < this.client.maxPoolSize) { + conn = this.create(); + conn.onerror = function(e) { + future.reject(e); + }; + var self = this; + conn.onconnect = function() { + self.init(conn); + self.send(request, future, id, env, conn); + }; + } + else { + this.requests.push([request, future, id, env]); + } + } } + }); + + FullDuplexTcpTransporter.prototype.constructor = TcpTransporter; + + function HalfDuplexTcpTransporter(client) { + TcpTransporter.call(this, client); + } + + HalfDuplexTcpTransporter.prototype = Object.create( + TcpTransporter.prototype, { + fetch: { value: function() { + var pool = this.pool; + while (pool.length > 0) { + var conn = pool.shift(); + if (conn.connected) { + conn.clearTimeout(); + conn.ref(); + return conn; + } + } + return null; + } }, + recycle: { value: function(conn) { + conn.unref(); + conn.setTimeout(this.client.poolTimeout, function() { + conn.destroy(); + }); + this.pool.push(conn); + } }, + clean: { value: function(conn) { + conn.onreceive = noop; + conn.onerror = noop; + if (conn.timeoutId !== undefined) { + global.clearTimeout(conn.timeoutId); + delete conn.timeoutId; + } + } }, + sendNext: { value: function(conn) { + if (this.requests.length > 0) { + var request = this.requests.shift(); + request.push(conn); + this.send.apply(this, request); + } + else { + this.recycle(conn); + } + } }, + send: { value: function(request, future, env, conn) { + var self = this; + var timeout = env.timeout; + if (timeout > 0) { + conn.timeoutId = global.setTimeout(function() { + self.clean(conn); + self.recycle(conn); + future.reject(new TimeoutError('timeout')); + }, timeout); + } + setReceiveHandler(conn, function(data) { + self.clean(conn); + self.sendNext(conn); + future.resolve(data); + }); + conn.onerror = function(e) { + self.clean(conn); + future.reject(e); + }; + + var len = request.length; + var buf = new BytesIO(4 + len); + buf.writeInt32BE(len); + buf.write(request); + conn.send(buf.buffer); + } }, + sendAndReceive: { value: function(request, future, env) { + var conn = this.fetch(); + if (conn) { + this.send(request, future, env, conn); + } + else if (this.size < this.client.maxPoolSize) { + conn = this.create(); + var self = this; + conn.onerror = function(e) { + future.reject(e); + }; + conn.onconnect = function() { + self.send(request, future, env, conn); + }; + } + else { + this.requests.push([request, future, env]); + } + } } + }); + + HalfDuplexTcpTransporter.prototype.constructor = TcpTransporter; + + function TcpClient(uri, functions, settings) { + if (this.constructor !== TcpClient) { + return new TcpClient(uri, functions, settings); + } + Client.call(this, uri, functions, settings); + + var self = this; + var _noDelay = true; + var _fullDuplex = false; + var _maxPoolSize = 10; + var _poolTimeout = 30000; + var fdtrans = null; + var hdtrans = null; + + function getNoDelay() { + return _noDelay; + } + + function setNoDelay(value) { + _noDelay = !!value; + } + + function getFullDuplex() { + return _fullDuplex; + } + + function setFullDuplex(value) { + _fullDuplex = !!value; + } + + function getMaxPoolSize() { + return _maxPoolSize; + } + + function setMaxPoolSize(value) { + if (typeof(value) === 'number') { + _maxPoolSize = value | 0; + if (_maxPoolSize < 1) { + _maxPoolSize = 10; + } + } + else { + _maxPoolSize = 10; + } + } + + function getPoolTimeout() { + return _poolTimeout; + } + + function setPoolTimeout(value) { + if (typeof(value) === 'number') { + _poolTimeout = value | 0; + } + else { + _poolTimeout = 0; + } + } + + function sendAndReceive(request, env) { + var future = new Future(); + if (_fullDuplex) { + if ((fdtrans === null) || (fdtrans.uri !== self.uri)) { + fdtrans = new FullDuplexTcpTransporter(self); + } + fdtrans.sendAndReceive(request, future, env); + } + else { + if ((hdtrans === null) || (hdtrans.uri !== self.uri)) { + hdtrans = new HalfDuplexTcpTransporter(self); + } + hdtrans.sendAndReceive(request, future, env); + } + if (env.oneway) { future.resolve(); } + return future; + } + + Object.defineProperties(this, { + noDelay: { get: getNoDelay, set: setNoDelay }, + fullDuplex: { get: getFullDuplex, set: setFullDuplex }, + maxPoolSize: { get: getMaxPoolSize, set: setMaxPoolSize }, + poolTimeout: { get: getPoolTimeout, set: setPoolTimeout }, + sendAndReceive: { value: sendAndReceive } + }); + } + + function checkuri(uri) { + var parser = document.createElement('a'); + parser.href = uri; + var protocol = parser.protocol; + if (protocol === 'tcp:' || + protocol === 'tcp4:'|| + protocol === 'tcp6:' || + protocol === 'tcps:' || + protocol === 'tcp4s:' || + protocol === 'tcp6s:' || + protocol === 'tls:') { + return; + } + throw new Error('This client desn\'t support ' + protocol + ' scheme.'); + } + + function create(uri, functions, settings) { + if (typeof uri === 'string') { + checkuri(uri); + } + else if (Array.isArray(uri)) { + uri.forEach(function(uri) { checkuri(uri); }); + } + else { + throw new Error('You should set server uri first!'); + } + return new TcpClient(uri, functions, settings); + } + + Object.defineProperty(TcpClient, 'create', { value: create }); + + global.hprose.TcpClient = TcpClient; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * JSONRPCClientFilter.js * + * * + * jsonrpc client filter for JavaScript. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + var Tags = global.hprose.Tags; + var BytesIO = global.hprose.BytesIO; + var Writer = global.hprose.Writer; + var Reader = global.hprose.Reader; + var JSON = global.JSON; + + var s_id = 1; + + function JSONRPCClientFilter(version) { + this.version = version || '2.0'; + } + + JSONRPCClientFilter.prototype.inputFilter = function inputFilter(data/*, context*/) { + var json = BytesIO.toString(data); + if (json.charAt(0) === '{') { + json = '[' + json + ']'; + } + var responses = JSON.parse(json); + var stream = new BytesIO(); + var writer = new Writer(stream, true); + for (var i = 0, n = responses.length; i < n; ++i) { + var response = responses[i]; + if (response.error) { + stream.writeByte(Tags.TagError); + writer.writeString(response.error.message); + } + else { + stream.writeByte(Tags.TagResult); + writer.serialize(response.result); + } + } + stream.writeByte(Tags.TagEnd); + return stream.bytes; + }; + + JSONRPCClientFilter.prototype.outputFilter = function outputFilter(data/*, context*/) { + var requests = []; + var stream = new BytesIO(data); + var reader = new Reader(stream, false, false); + var tag = stream.readByte(); + do { + var request = {}; + if (tag === Tags.TagCall) { + request.method = reader.readString(); + tag = stream.readByte(); + if (tag === Tags.TagList) { + request.params = reader.readListWithoutTag(); + tag = stream.readByte(); + } + if (tag === Tags.TagTrue) { + tag = stream.readByte(); + } + } + if (this.version === '1.1') { + request.version = '1.1'; + } + else if (this.version === '2.0') { + request.jsonrpc = '2.0'; + } + request.id = s_id++; + requests.push(request); + } while (tag === Tags.TagCall); + if (requests.length > 1) { + return JSON.stringify(requests); + } + return JSON.stringify(requests[0]); + }; + + global.hprose.JSONRPCClientFilter = JSONRPCClientFilter; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Loader.js * + * * + * hprose CommonJS/AMD/CMD loader for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +/* global define, module */ +(function (global) { + 'use strict'; + + global.hprose.common = { + Completer: global.hprose.Completer, + Future: global.hprose.Future, + ResultMode: global.hprose.ResultMode + }; + + global.hprose.io = { + BytesIO: global.hprose.BytesIO, + ClassManager: global.hprose.ClassManager, + Tags: global.hprose.Tags, + RawReader: global.hprose.RawReader, + Reader: global.hprose.Reader, + Writer: global.hprose.Writer, + Formatter: global.hprose.Formatter + }; + + global.hprose.client = { + Client: global.hprose.Client, + HttpClient: global.hprose.HttpClient, + TcpClient: global.hprose.TcpClient, + WebSocketClient: global.hprose.WebSocketClient + }; + + global.hprose.filter = { + JSONRPCClientFilter: global.hprose.JSONRPCClientFilter + }; + + if (typeof define === 'function') { + if (define.cmd) { + define('hprose', [], global.hprose); + } + else if (define.amd) { + define('hprose', [], function() { return global.hprose; }); + } + } + if (typeof module === 'object' && typeof module.exports === 'object') { + module.exports = global.hprose; + } +})(this); diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 86ef406..e43e82f 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/src/APICloudTcpSocket.js b/src/APICloudTcpSocket.js index 8b8417e..307dfca 100644 --- a/src/APICloudTcpSocket.js +++ b/src/APICloudTcpSocket.js @@ -12,7 +12,7 @@ * * * APICloud tcp socket for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Mar 8, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -59,7 +59,7 @@ switch(ret.state) { case 101: break; case 102: self.socketId.resolve(ret.sid); break; - case 103: self.onreceive(toUint8Array(atob(ret.data))); break; + case 103: self.onreceive(toUint8Array(atob(ret.data.replace(/\s+/g, '')))); break; case 201: self.socketId.reject(new Error('Create TCP socket failed')); break; case 202: self.socketId.reject(new Error('TCP connection failed')); break; case 203: self.onclose(); self.onerror(new Error('Abnormal disconnect connection')); break; From fac8f0729bd8b6cd89ef0b017ae3c33cc91ebd6b Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sat, 26 Mar 2016 23:47:20 +0800 Subject: [PATCH 24/86] Fixed then. --- src/Future.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/Future.js b/src/Future.js index 7b56c85..4b82db4 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Mar 26, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -479,12 +479,7 @@ if (onfulfill || onreject) { var next = new Future(); if (this._state === FULFILLED) { - if (onfulfill) { - _resolve(onfulfill, onreject, this, next, this._value); - } - else { - next.resolve(this._value); - } + _resolve(onfulfill, onreject, this, next, this._value); } else if (this._state === REJECTED) { if (onreject) { From 43355e61268c0c275375e931d41ad80e6b432824 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 28 Mar 2016 13:36:26 +0800 Subject: [PATCH 25/86] Added Future.promise.done. --- src/Future.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Future.js b/src/Future.js index 4b82db4..11618cd 100644 --- a/src/Future.js +++ b/src/Future.js @@ -500,6 +500,11 @@ } return this; } }, + done: { value: function(onfulfill, onreject) { + this.then(onfulfill, onreject).then(null, function(error) { + setImmediate(function() { throw error; }); + }); + } }, inspect: { value: function() { switch (this._state) { case PENDING: return { state: 'pending' }; From 2d7e839f6b3bc3b8e7188448ffdd7d68f548628d Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 28 Mar 2016 15:36:27 +0800 Subject: [PATCH 26/86] Added Future.promise.fail, Future.promise.complete, Future.promise.always --- src/Future.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Future.js b/src/Future.js index 11618cd..cdd475c 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Mar 26, 2016 * + * LastModified: Mar 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -529,6 +529,9 @@ 'catch': { value: function(onreject) { return this.then(null, onreject); } }, + fail: { value: function(onreject) { + this.done(null, onreject); + } }, whenComplete: { value: function(action) { return this.then( function(v) { @@ -545,6 +548,12 @@ } ); } }, + complete: { value: function(oncomplete) { + return this.then(oncomplete, oncomplete); + } }, + always: { value: function(oncomplete) { + this.done(oncomplete, oncomplete); + } }, timeout: { value: function(duration, reason) { var future = new Future(); var timeoutId = setTimeout(function() { From 9aa89e0bedf3cc0e8ba1ae2238973840542a6043 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 1 Apr 2016 19:32:21 +0800 Subject: [PATCH 27/86] Fixed retry --- dist/hprose-html5.js | 27 ++++++++++++++++++--------- dist/hprose-html5.min.js | 2 +- src/Client.js | 4 ++-- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 1679125..d3ecaa7 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1067,7 +1067,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose Future for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Mar 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1533,12 +1533,7 @@ TimeoutError.prototype.constructor = TimeoutError; if (onfulfill || onreject) { var next = new Future(); if (this._state === FULFILLED) { - if (onfulfill) { - _resolve(onfulfill, onreject, this, next, this._value); - } - else { - next.resolve(this._value); - } + _resolve(onfulfill, onreject, this, next, this._value); } else if (this._state === REJECTED) { if (onreject) { @@ -1559,6 +1554,11 @@ TimeoutError.prototype.constructor = TimeoutError; } return this; } }, + done: { value: function(onfulfill, onreject) { + this.then(onfulfill, onreject).then(null, function(error) { + setImmediate(function() { throw error; }); + }); + } }, inspect: { value: function() { switch (this._state) { case PENDING: return { state: 'pending' }; @@ -1583,6 +1583,9 @@ TimeoutError.prototype.constructor = TimeoutError; 'catch': { value: function(onreject) { return this.then(null, onreject); } }, + fail: { value: function(onreject) { + this.done(null, onreject); + } }, whenComplete: { value: function(action) { return this.then( function(v) { @@ -1599,6 +1602,12 @@ TimeoutError.prototype.constructor = TimeoutError; } ); } }, + complete: { value: function(oncomplete) { + return this.then(oncomplete, oncomplete); + } }, + always: { value: function(oncomplete) { + this.done(oncomplete, oncomplete); + } }, timeout: { value: function(duration, reason) { var future = new Future(); var timeoutId = setTimeout(function() { @@ -3914,7 +3923,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose client for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Apr 1, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -4014,8 +4023,8 @@ TimeoutError.prototype.constructor = TimeoutError; if (context.failswitch) { if (++_index >= _uris.length) { _index = 0; - _uri = _uris[_index]; } + _uri = _uris[_index]; } if (context.idempotent) { if (--context.retry >= 0) { diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index e43e82f..d43fe07 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/src/Client.js b/src/Client.js index 7063460..10c166a 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Apr 1, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -112,8 +112,8 @@ if (context.failswitch) { if (++_index >= _uris.length) { _index = 0; - _uri = _uris[_index]; } + _uri = _uris[_index]; } if (context.idempotent) { if (--context.retry >= 0) { From ec9ed12ec205134d0271fadd8002bbbfd00cc086 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 6 Apr 2016 15:02:09 +0800 Subject: [PATCH 28/86] Update README --- README.md | 12 ++++++++++++ README_zh_CN.md | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/README.md b/README.md index e9e101e..dfc1902 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ >--- - **[Introduction](#introduction)** - **[Browser support](#browser-support)** + - **[Hybird app support](#hybird-app-support)** - **[Usage](#usage)** - **[Exception Handling](#exception-handling)** @@ -70,6 +71,17 @@ This project is the implementation of Hprose for HTML5. * Internet Explorer on Windows Phone * ... +### Hybird app support + +* ionic + cordova (http, tcp, websocket) +* Chrome extentions (http, tcp, websocket) +* APICloud (http, tcp*) +* DCloud (not yet) +* AppCan (not yet) +* ... (http, websocket) + +TCP is only available on iOS for APICloud, because there is a bug of APICloud Android SDK, and they don't want to fix this bug. + ## Usage You don't need use the javascript source files. You only need include `hprose-html5.js` in your html. diff --git a/README_zh_CN.md b/README_zh_CN.md index 9aafdde..3f97240 100644 --- a/README_zh_CN.md +++ b/README_zh_CN.md @@ -16,6 +16,7 @@ >--- - **[简介](#简介)** - **[浏览器支持](#浏览器支持)** + - **[混合应用支持](#混合应用支持)** - **[使用](#使用)** - **[异常处理](#异常处理)** @@ -71,6 +72,17 @@ * Internet Explorer on Windows Phone * ... +### 混合应用支持 + +* ionic + cordova (http, tcp, websocket) +* Chrome extentions (http, tcp, websocket) +* APICloud (http, tcp*) +* DCloud (还不支持) +* AppCan (还不支持) +* ... (http, websocket) + +在 APICloud 平台上,TCP 只在 iOS 上有效,因为 APICloud 的 Android SDK 有个 bug,但是他们不肯修复,所以我也无能为力。 + ## 使用 你不需要使用 javascript 的源文件,你只需要在你的 html 中包含 `hprose-html5.js` 就够了。 From 72c76d857097655006b386bbdc216aac36962688 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 11 Apr 2016 16:03:59 +0800 Subject: [PATCH 29/86] Added toPromise and fill method for Future --- src/Future.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/Future.js b/src/Future.js index cdd475c..b0aec64 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Mar 28, 2016 * + * LastModified: Apr 11, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -58,6 +58,10 @@ return isFuture(obj) || (hasPromise && (obj instanceof global.Promise) && (typeof (obj.then === 'function'))); } + function toPromise(obj) { + return (isPromise(obj) ? obj : value(obj)); + } + function delayed(duration, value) { var computation = (typeof value === 'function') ? value : @@ -117,8 +121,7 @@ if (count === 0) { return value(result); } var future = new Future(); Array.forEach(array, function(element, index) { - var f = (isPromise(element) ? element : value(element)); - f.then(function(value) { + toPromise(element).then(function(value) { result[index] = value; if (--count === 0) { future.resolve(result); @@ -139,8 +142,7 @@ return array.then(function(array) { var future = new Future(); Array.forEach(array, function(element) { - var f = (isPromise(element) ? element : value(element)); - f.then(future.resolve, future.reject); + toPromise(element).fill(future); }); return future; }); @@ -157,8 +159,7 @@ var reasons = new Array(n); var future = new Future(); Array.forEach(array, function(element, index) { - var f = (isPromise(element) ? element : value(element)); - f.then(future.resolve, function(e) { + toPromise(element).then(future.resolve, function(e) { reasons[index] = e; if (--count === 0) { future.reject(reasons); @@ -178,7 +179,7 @@ if (count === 0) { return value(result); } var future = new Future(); Array.forEach(array, function(element, index) { - var f = (isPromise(element) ? element : value(element)); + var f = toPromise(element); f.whenComplete(function() { result[index] = f.inspect(); if (--count === 0) { @@ -334,6 +335,7 @@ promise: { value: promise }, isFuture: { value: isFuture }, isPromise: { value: isPromise }, + toPromise: { value: toPromise }, join: { value: join }, any: { value: any }, settle: { value: settle }, @@ -376,7 +378,6 @@ } } - function _resolve(onfulfill, onreject, self, next, x) { function resolvePromise(y) { _resolve(onfulfill, onreject, self, next, y); @@ -554,13 +555,16 @@ always: { value: function(oncomplete) { this.done(oncomplete, oncomplete); } }, + fill: { value: function(future) { + this.then(future.resolve, future.reject); + } }, timeout: { value: function(duration, reason) { var future = new Future(); var timeoutId = setTimeout(function() { future.reject(reason || new TimeoutError('timeout')); }, duration); this.whenComplete(function() { clearTimeout(timeoutId); }) - .then(future.resolve, future.reject); + .fill(future); return future; } }, delay: { value: function(duration) { From 446ebacdd4a2611ebd1b68b4983371c01ea11e84 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 7 Jun 2016 01:26:40 +0800 Subject: [PATCH 30/86] Fixed Future.prototype.lastIndexOf Fixed Future.lastIndexOf --- src/Future.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Future.js b/src/Future.js index b0aec64..34d892e 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Apr 11, 2016 * + * LastModified: Jun 7, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -292,6 +292,7 @@ searchElement = value(searchElement); } return searchElement.then(function(searchElement) { + if (fromIndex === undefined) fromIndex = array.length - 1; return array.lastIndexOf(searchElement, fromIndex); }); }); From b45fcb9115b18b44ea41262b2e87331d60543ce8 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 7 Jun 2016 10:29:48 +0800 Subject: [PATCH 31/86] Fixed lastIndexOf --- bower.json | 2 +- dist/hprose-html5.js | 27 +++++++++++++++++---------- dist/hprose-html5.min.js | 2 +- src/Future.js | 4 +++- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/bower.json b/bower.json index 02b99b0..377821b 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.8", + "version": "2.0.9", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index d3ecaa7..e95fc9c 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1067,7 +1067,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose Future for HTML5. * * * - * LastModified: Mar 28, 2016 * + * LastModified: Jun 7, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1112,6 +1112,10 @@ TimeoutError.prototype.constructor = TimeoutError; return isFuture(obj) || (hasPromise && (obj instanceof global.Promise) && (typeof (obj.then === 'function'))); } + function toPromise(obj) { + return (isPromise(obj) ? obj : value(obj)); + } + function delayed(duration, value) { var computation = (typeof value === 'function') ? value : @@ -1171,8 +1175,7 @@ TimeoutError.prototype.constructor = TimeoutError; if (count === 0) { return value(result); } var future = new Future(); Array.forEach(array, function(element, index) { - var f = (isPromise(element) ? element : value(element)); - f.then(function(value) { + toPromise(element).then(function(value) { result[index] = value; if (--count === 0) { future.resolve(result); @@ -1193,8 +1196,7 @@ TimeoutError.prototype.constructor = TimeoutError; return array.then(function(array) { var future = new Future(); Array.forEach(array, function(element) { - var f = (isPromise(element) ? element : value(element)); - f.then(future.resolve, future.reject); + toPromise(element).fill(future); }); return future; }); @@ -1211,8 +1213,7 @@ TimeoutError.prototype.constructor = TimeoutError; var reasons = new Array(n); var future = new Future(); Array.forEach(array, function(element, index) { - var f = (isPromise(element) ? element : value(element)); - f.then(future.resolve, function(e) { + toPromise(element).then(future.resolve, function(e) { reasons[index] = e; if (--count === 0) { future.reject(reasons); @@ -1232,7 +1233,7 @@ TimeoutError.prototype.constructor = TimeoutError; if (count === 0) { return value(result); } var future = new Future(); Array.forEach(array, function(element, index) { - var f = (isPromise(element) ? element : value(element)); + var f = toPromise(element); f.whenComplete(function() { result[index] = f.inspect(); if (--count === 0) { @@ -1345,6 +1346,9 @@ TimeoutError.prototype.constructor = TimeoutError; searchElement = value(searchElement); } return searchElement.then(function(searchElement) { + if (fromIndex === undefined) { + fromIndex = array.length - 1; + } return array.lastIndexOf(searchElement, fromIndex); }); }); @@ -1388,6 +1392,7 @@ TimeoutError.prototype.constructor = TimeoutError; promise: { value: promise }, isFuture: { value: isFuture }, isPromise: { value: isPromise }, + toPromise: { value: toPromise }, join: { value: join }, any: { value: any }, settle: { value: settle }, @@ -1430,7 +1435,6 @@ TimeoutError.prototype.constructor = TimeoutError; } } - function _resolve(onfulfill, onreject, self, next, x) { function resolvePromise(y) { _resolve(onfulfill, onreject, self, next, y); @@ -1608,13 +1612,16 @@ TimeoutError.prototype.constructor = TimeoutError; always: { value: function(oncomplete) { this.done(oncomplete, oncomplete); } }, + fill: { value: function(future) { + this.then(future.resolve, future.reject); + } }, timeout: { value: function(duration, reason) { var future = new Future(); var timeoutId = setTimeout(function() { future.reject(reason || new TimeoutError('timeout')); }, duration); this.whenComplete(function() { clearTimeout(timeoutId); }) - .then(future.resolve, future.reject); + .fill(future); return future; } }, delay: { value: function(duration) { diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index d43fe07..5356c2d 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQDXdQMAAAAAAAAXirMnLgKQAhzWPacdlCd/azCsNPOU/0gFHubTigjJ/j1SB/ISPdD2joEPlG2x0/8gtrXDghO984hf6N2JXKEwYaszmC7eXTbGWt/tLt1USDJGpTN1W7EQobKrYMGD0dy9NSilKjOYWU6L3TM/NGiHwzQXhCjZtUGVYwRjnNiY65zPKXWFEiatq+qm71FjT8lqtrdOw0UKEvqpTmXXHJUcI/jaPbGeaMUsWoIlXStUJ/JBiJpShNi7a4nE2rI9bvxmJ9PUhkSHHovp3Xf+qwmISVFIUebUmsPjAHbwbJiErJvh4G/gOEI0EOc57i5hQAnlrEwVR9zI7fGzCHQhIgpkBqpYZfwXB1SJcpUgpTigCv+Qa5l4fZQFWVKYLQviVZqtz6vxuFmBqa7hdp99DVxbZQCbQZRk8AGWaS6qCA3RXw7fg/DdKqkQEiTyBvxK9TmEFgNI0wxVYBzS2B3TM8whV30miUVEr23shZgEhAXqm0p96wuGWmtunT72R2CESRA4BEBN334SAUKS2qO7PzPQ3HHj0fv8FzzJBtj3vR9jfdwmKGv6FKN/K8b2+txCjf/P4S0/0UejJ4bvlg0xhPlbmMnlEI5G7wXmJnhuvySjdpNgln0sPBrYwB5r0Sy27xK5bS0p1FBlKKVN7bqdDi+f9hjObU9XE4a2/fNeqQnRmzKYwvC8q50iWwBa49/A4/h4TZSIipxNa2c74hkWtjKP6TaEvUsY6Mf9tXodpsIWT/cwRlpIfaedJ1Pv9sHbfSSgKYfqiMPPLLCgWn0SKaoCUY88o+XwDnD9B+7P+1vbA4/UkNOMnF1VtNN1TyhJRcrcD4tiBh7HAX8U6/2PVCLaonNobSXJFV7xJiu/7dq9TFw6bnUeoa6WFHfxumY4k/8jBCvrQMnoYO1wi5tUZ6LgHNpnKl5JEqJZFbXP8g5FphhdAhkWripR8U8Nx5ORfufmTrSWYixfZwtmGAyzteWbJNkDxCfHVKp3oLTWk9diDAW1nQKeiOQvKLj0edaBelFnG54A2qGS9ZZ6j+buctfxY4VWyallGuEjxfgHvJEjPF1zPhMOEiFqAYIrxfNKdxwabJave4fYrXSyyYewY911wWsZrFC6Lr+ZPSOTVFoB4LQ+Ysechpe3Ty7JaVdh4XARweq/DfdzmsWn7AcFZOprVmQ4A1Uqw0szzkhGCII+rJhz4JEE62Vcx+bhOnIiYbxZcY8KnQI238+nVYlyIAq1ujjncGDhB5hXoJAkzTif1eudBYZ2tDg+7eMN4TomaHVzD5UobWdIGrAt8kUxgoUkAtmMV57i3zfQj9WWZOHs/WcuBcQdY3yQpX/Gg6Mk5LRqWua92EgkVyN93cSKQx2+1COTJ8P1dnk7hkYD8Kmm9sp8YQ/bX7dzW88dPwSVTYh/btMw2EHIGhiFnC0pl96ZqZHVL0LZ+ZDjfBJAM4Y5d4Xa2nEQaCwnneC/WoF/nyDn6eePvp30Oar9ZZGgCn0uyViS11VH83Y1F2WPPiCL8A2D6KZtmDgV5+Grxg/HnMtsAV9lvhu2CbrUREXsR4wCiDuw3O1iitecgVlZ/oAYcMgNw82VI9bZPv7XEDzLYeKxFDJ8pOKKy4A3vrpJS3YR3kVW4J0gJCC1I1sSWr5KW22fiA49kxjkCqa8uaOR+v5V8wccClFmp8OmCDIzgC0os9TEfC4KWhOD2I4hhEL+ryo6v00+4ABOVnU2Ct2zR5q57PZmIts0E7rzf6B18qpeGnCGJLrL2vDmnU1M0SN+vlxdqa0WW65AmMSTtfCqyDwJcBHNlE7TnkXw4o62nDVCm7o/JZHMdaKdpk4F0tCzyL2L1WtCGPrzcbZrIvNhmMsddUkXVPfYdA0eXgwXkFIhuVxMejx0WhfJFzuaJoL1AR2IBlPdzB0/L6ORlz5Ns+RdLlXKDcHb+gF0AGZO8opZ1o/7prprXE4qodSm3XXXaJUWi+1FreCbdi4Bhr2hu8rMDhf+RlxNm2A25nhJm7XS/jVY+rCLh5urcJIomLeepWmXWOXz0en8Y5A6+RBuCsxz9bak9eJbS7RiRcF0cNujm4I2sCrY9CBjTox3zPYI0QbfLTWp7aY7flJLkpxJU6SKyoUM0JQ5qwOzryhnwruKNNW4tIzEOjDBqXdzPED8R4FDM6Ilqc+hNSmyB0mk4cNl3hpHBkdW6rPDb8N/WV41yq5gjjcohzUqsf2E3P9A+pusGYUmoPmN7VnpMcqDoDr96HP1XiSGZP3Uut/GiyHuJIawGOl/FYGdB5CRc2hcUdjg2yQJHYRU+PJ5M1hRW4HaV/TlQy2o8cOH0cuQLnvDSi4PJL/rUoYlXk/++G6FraxJ10QUcLPEtxx65no1K/uVuv3ynVIR/0m74SY2xIfADlntRryHOkSOO7gGqC+UYCTaUddTWFo+XmdKT+AKA6bHbOifdOXKwCzl2RGMnWcUgYMieW5uQ5pHTJT7MzOpbVFNRiZvCerRSjmAlgHG56J3wQV+uOIul0LIgHYgTgVyhFrArd15/r29YdWFhoZAKlhBRYb+l8rzR4h4K1aGIyw8BkV6gVvLfxPaWaKn98yaoHHH8FpyPdGZNqfppFW6FETf2odHJE7oiVLsxdjghoCU1no71XbQv0FSKVzVHSa9YicAxZ5yJWlhcYKb1+o1aobhMon0CgDT6sQ364NFShwBXYfjX+JfCJRZfbyrj+sw9GncMf/rCDFUQL5X5gCe0knunfD0ml8yNPFhLE3v50bK0/d5+LsRdjUAsapxP0hvqmmWvlcxIrzU2iiIiMWNuayfJGaFe3wQaGSysGnM2lyi9Jr8n6UbSQTYReYmVkp4FKJPmhyybjxGQwN+TcfOuXJz9E57KBxBgDutlDHpe4SmSAncuK88Crg0m86Eq3qkhZxxLLrCgrII9MlQeq3B8tAlL2kWs34z7QVibfuBV1GP2vde1csr8I5ITZjdmkXluGZCmvBDCeyvNawwtp74g+lUNh30dEA59MPul4N2deyIw/Gy2mgtLISj3Kq+HgnYIvdVj+ODC/Kkj+bNDM7HueYxhTz1vji8NLrMFpJuq4yG6mHJAsYIyGS4zEFB6UqRmpfUNFNq9etBp8IKtv47ogo/Gzp+dvtTTx+aX+wL7KXAog406hM+Y4jHVqfY2JYunW8gfha+Cy4NoVJeFGp6MSQPb3UKe4lVW5pzEY9Ls/XrV541CTI/dhmkr5YNBvroPrFS5XzmkhOuIYJkin3ZJc1ceywRo786gBAW56jjk+AOt+5FabfCgEZAocOdDjzk44WOj253sq2RJZ51fOK96CTFHqxKnyzCrjtJjHqFZOETvDKY+v6Sa8V4BiqWJfzpr2LmJi51YwW6Z6TN+O+IuSL4uLryx82pXlqgDTp7Pkh9RjDLwmLpkBgiVNdIX0XnG68SvuEvQtcFQJ6TXmzUOOmQZ6BtF87TjyQxkS95AMtQtcNuqhxLFZx1hfWL6cJ6xikjHRwmPorHgnJk5vxQGdcpnoSI8HIctWAJJPMQLbyRDb7x8/WsAf0d1wLJMJY9xRlucqzS90MKFxiglcOkrJiszwxJZx2fxAWvm9pI+P3MTGo3nPDGPUAhqHq9HJRYgODFiHf4mhv0hGyPZxfEBTDPE9XbboJdJ1g6ivMt0FA+za/ilZeGv6r//SA0P6os37KSOnHjwKi2tcJI2i81SkltctdUG2DNGGa90zGimE3ERV4Gx3aiHHk5Hs7XgbMxs8wSvh7y1ECo/Rf+mXw2Vlc6lfMSAN0TvlIxpF07mbO0c0R7iBZOUUMvluWN/4MXndU4U8IYfkZ3ZKkGdYCqRl3mKQ0IIc86DNpPi05BmbrN07GyJ5OFdyrrfpOH5Tg31n6XUz0jiXNXo0qslVHtJnQJY4kaggWL4hei6Yv2lv2fYnuiXxIvPDADwwzCIPiKzBu3UUVVqCFcZp5msBg7Jl20GXJUMGhs27XC4dMdAbjilbwOyom8AyMuN+AyBZ2cUCfPuv2jlhrrcpRep4Vf8I1bII99t8nAvx98VseyzUO1BheKuoi+2yJNjuvAm8ZHl5QwS2Qbjsjdra1flvxpmWgdXf4lpz/9k5LpBmLSo1gq09sCXLneraOOisvxr237API4Jtk2KtGs0dLi2+V0BeFeKPQY+mIaAQjWrhPtKy5Dvc9SCmYI25E8AmSzBEA66B5Tv76U954dgcKFP8n0MQ1TLjdmu8Qv5aBzWqKUvTlVZCN+bHTKAEm7Lll1/LiUHsSWsUzVrokiMtNrDFctfLjiuIHtJg8nV3xs8pxag3kmIBQmx94fVWjIcTTqpfaHyRHJ4EYNB95v69wIeDsOLiTsV1y9wfidQjpvyaCTfNjTKDTAjG+O3M1uWHP2PdiKxKpkl12aUrzY+9FOXxuJX06HgbQDZpypt88yOnwlOlwRqcRvi8EKVhXTaPbdqJqmCm/IidANF9P6PDOSKShcKzVzgFOSJ5clCDgkSBW83ece1tPE09KQ6KJFqwLSSSceJK0JQ3YlW9Qis/c+WVZPea/fss6ymxQnB0yDqr8g61tC5XQJi9VG1RbQeaOM5lQtCzQkS1K+zYDlnDEMMSpem6uTt0VGzWpKoJJz3lUPVncQIdQnQHaoDFOaTD3XeR7MhVN5g9Ou2y5K/F7b88Tqp7Jvt5MLFbjQJ9JJWzP6NYCls6kHyGxxyXxHfbimOiXuTObV5BBqVfICOxVwLdrfT5dAL4yJQTeLC61qNAakNt7tar47YGZmnHbsQMmD61WLDZutErHAo7OU72IPObYenNLSYiONsJhEd3GbdUQUk7bUyvazV54qhkh2Z315N9J2tJQgE3uIY8Z2hMossjrRquXqbi8ctraklBVof4Fl/e53Sgh7WI/aNL/jqzqIhgM/hF1bopOErCkGK2SUykxXELXrPs237LMP5OREbDI3x+rKG6MmnYOZqnMdVHgtlMmgUsHmAderK3U8lHGJQTcuso51Md2bgKNosSXdOA/wsTONZPMsnwXuvAJ+1JSvWuJ3ZIS5JfZE5nuTS0dYsAI46huUMuhPR6miTGm0BjcgAiuoA5P7vTzov5lLXNTOVjykJbWeOaJa1XcTuYM4O3f5whe3gdvIsV7hIzkTWXFVtCNroO7QF1zxR+lpfuibgFYOhI6Fkzz6RbWYKi1NhWoZfGaEP0w3i6tYL0ZmJ0aschBA049YtQw+LSgpKH7Md27GDCq6c3EhEunAMnwnVyUNp0ykxg6UOuC/JnlrdbssyzT+E9BZOPtTCouyskdc0e2byi6iB1g0ZIJf3Tz0LFog3F0z6g5/epT75cOA/Yn/rI/j1zk0aa6IGLHiqvO5eViwumKgYGE7KORbkewrITMGZWLLLzXw5YXuHrG8QWruRTRyrX4r5nwfg/uj45D5YSk1wqDU0NGEPc3utYOyIGSBsLAgphc59UJrlDAiM3EHG+rimF76P0KURPsv3N1os82/bGirzzGIYs1889NFLpkXPeFqJqP/ZP6L4z62gBygjH5JDX2MUoajWFpo0dsWo6Sc+nltKJLYrN7bCoCfsNJiUmCrVq4Q6aiyaMKDVLDCd1VZZrn4YWTT0dbPraLDMrbYZwonQJAgeEDoSF28xsvy7N3TTe2Itd9m8FyLpigsKeWY9C2tA7pwwOGds3gvBy2hgHClqCWlbxzrN3qY2lg+xEIS6yqb6tFfQsFUFwuEp6tQKmHl0o2PoEmkdRB6uvzY5H16SEmvh2U6MB+LI4/uGjLzSe0pSEkEg0tJG2GaIF7OAusxYlt0PH7iaLYTvBCUkwn7UhehfQ8fWb87n3A7HK71p/CtdkiJqt2sEkpYN6K1/p5n33Lh8E8GmVVoZsDrREomHj+9vgA7+IjYhayAqQIOiKSY4qIs1oy0fz4oW9040bkyI6pci/R/sTKaKh/aIWN7nReRORWGdEvfHVLl41EexRIIS/UfbYK7m3YmJ0hbVhPtKc+Gbm2A+90dzHcmuWNa/2f4SOLEm8cVdqZ9KBKOwvtCWrYOCU8wBRD5BRGDIoQSVAfWJr69lL/LnGYy8DtL7L9RqeYf/sEdqZ8GOjg51126RF0KqQ+RQ/2eGmtWV3fUcQaEofN4DAVDNA8XAX4WKCtRlDg8YiBonNiku7628HSk4s9vpNjBrfV185A4gp4CAxMX9acjbOxBxdWR9cMM/mOP4GPd5vy+FtrhblZyazG0DxJMXi3n71PSexE64uZg7H43fun0XZQ4v/R/KMKTDehd7ioYyM6wfl6ub9HpPbiUDKl+JPN6k/fTLxS/YlucFiRjL9fnNEEu2T1Frfp1FC6qEoUVFXdTjF3MUswaEtvJxWuIg9c9AgNY1Gt4xPvaI4VEOXpA5WuLGCDS9JZF++YCr01jvUjTciwYSZ3agw40LF+t7o/KyxlyLKljFu5uFPSyOihwwi7FRRzs3sWszNR4LV0f0XdOSU3P/S1rfq9MdArZUZjCUNTAkzERgdcaQeBItnB/5bEfnDOzYWi+Rncwdpb3lRZ1LOGNkGgqc7PWaRH0rJ4Vb/3TZdVo8pKepxxTF0tTlsrnEFesqHrIpZKC/jypbtF4h2gmOkpQGrmiWzLyW+eQmTkBn7KiVwzHY0oiaE/Y+he5kF6j+3bG7jmsCCNdxJWYU/BtwvNlLiIXFcza200hNQmdkFwx4FwWULkaVEwBgjHr2vABdDYpcfjUxuDa76uO9BrVlxIpW71lSgTlDWedWNXi6MCO3k+OyhwXOXowDnVQUPz5X7j7H7jlgm0kk11355c0Ytm/5e/TpeKu8x1A0SwOZl5IT719fQJzwHGj91CZ4zGYoY4nS/AkDlmBcD8D5xWcQIQ+7DXPo1TdK0eSpWDsUWOGfcFxz29Jq2JHPBqzgjrT4YziB9j2G20xIzxKHbUQnjvFyvwydMvDKCViI8wbc+ptIMiigHtt1RacTg3F20HQyD7XoSCmU1IRFlfCMk95RF4YH4lO6kTaoMju9S2+wZzi/v+bo6IJYCBdNsnUp+0PrKMpslyZGbgLEOP3EYQZDGuEHun9bXckqiXF6LU3q7FPpO05tHvIaP8DGib+mVqeYGQCzySIvFMKORqdfgHH2WGMThH6rB5zh3hmjvx6VxndAFPYUkiztyR8b5TtuAhocjNEW9ijsOZZl2kqwUCa9h623N2AwY/+ieRNK68Sr8yGQuOZY9XSdMXje+d+BwpLULi2UrrbCjpFJ2oB0PCFvD3GGV4x7JtxbqeXjTh6A5bXcjJQEHFLtcKBv1pIFn99nzgGE/KxAGVOwLj/kAWAOoY63CPtp5aCasS2eQMKh7hElFKAbsUsnvhTVrcyxLzDOna9DYMJPgpai/vcvSIRy45corGO5RBOSmyRB6DpE6ak/PI89cOWJivP4anPfVeL91JHfKoRjpNeHoqrcydLS9JF1iwAHwRtaQ/rGC1KSUErKeCc7Lg3QhMbjg8qq3D1D2ex5pJ4dZ2slq0oGrvlfj4LxEvupxaB58SJMVcLV2ltRgKkReNTNWrMurrr27ra7dzkcGZZNr1xXtp3iIPTttWHDtZIvpYYTsU1Ed8hbYurUO2HocND6BVptP8gfuKIEc+dtjogx6ai0s3rVPFVlJejQdNZwvaRSTFVsOxLRu2wqsv9tI7tdSwbPxfQfdw3XRqPJr9CNkgH43bBiEYVLPF8MFvU5HS4Ilanyczd1NPxTx0/2+zU065cqdtkgjXTZ4hJDARoC9KJ0+wHJGBGKLqcHYI4lBXu4VDIX7CXPItk4Hl8GFaPKvdg2Nbov1CgDHQPLgh4u5oR0ugb/iolRctWPslO+iAvAS6hDt3PVYTn0/2y2f5hPM8iShIwDnfcXTP9TYQGlVNzIpWCkTDw5vpPcBbR9pPEvLJEm5w1hoSM+CVPmH2SecU9pms8RJN+GfUb7QF4TIkJ22k867hi8Hav3SETEotECq5joTJzXuVkCUoomM8dZlBS35jNL4ruRZkYH9fRf0m/rQGH5NetMA/e4rKNnjv+dWnZzXSPmmY5rvKVn4h/fenn4GDxjQ1/qYEpGAfd/G18GIlooq9W8w2WYUPXW6N0whkfD760DmSrBbDhMuex+c158H9Z18thSDZdXyFfH/vSXPgsXrdd9qubo/vDaNDeubVJUPKZ+pPq12L1oHmFWDr4YrACTC9ZrGnPaNRsSPEUJ2nPUVOTQcszhTlUqQoLUB+SUYkZhcQPZocWqpw6e47vsk1Qyl6ApVPimAV2s91umcUTqQirg1GitdAfqNfO23Xle5oI2Tcgeub6vkywOHTtODufeODmwQoyRzkX4SI9djUW6O4Fh4OCsDImyimoM3SEXeiKGP48XZYtuQ1Lo21/Ht6Nh6hFpouzmu6gc7Ar8/NF4GGg7DwpOl4c9QJo2zf83D+IcJNlUptW2OGvAcJKfKZIrmKiONna/Th60rJKhUdLSgMjzCeICbB8vnwrDi0Ex9mevshxn5zikwKmqPVajxPpFK4EBgjyWsK66qVWNPBbK6q/nyNlRFpWwQwKltd38AMJyUhzkyl8wmD1xZCU5NQ/Zvg2EVPqWrSOm5Tho0kGzc2XaWPHbtJELi4KUTiNCoNSGoJcfqkw4buxf4jlYatsGg7mgH/iDpx+EKNXf/CKlerL2pfFDdzmOluI0uthcudY4QCxFBLSNilNII3XPQoWf+tq0kEPSRAPYk+uUT1hlUGdO9ybYKYzXy+VgKRsjJSLE4rAl6M0dthXBsz0Glwiry601wGRSQimr3RHliQqNPpFDJWHq8xICgEf32a7nO1dYbJCwdIRN43eO/tfT48A+Ot+CqIo5pDW3x8sRsIwBeDWA+nxxyMgpmndX0PZre5Qk8IvgWj9AVIZy9wEO9V0DSlBbB9WeG7/p6EzJm2F/BkP8p2l8TX04738qlkDJkRv3zFCqO3Mt0XufBMO+vH5wcknAA3+CUu2gcIErNRAxtOzezS+aqfRKEBnQkT/ghgoJOkePpPfZd2c0+li1DuI9V0GUXDnW2ZFyuTwwALusqK/xNYiUQqzWiXEBKgGSEvgV9hBAH/pEFSaWZbHedFkGW5t4lqhTcvhYlJYUxPCRmnAyYHkW4tO4HuKxqxWRKjtu9bB9oDp7fpn74UMKJJkoy/hdWoRtwWgKDW4wpR1d0I2Wk/W/EpHpXa4m/RxdBNgWTJMxgi3uED19kpHI0/BdE7fxXn8is7nmvbLOAtca0+b99g6iTsKMRtFLXf2KzTpwlvxcTt6noBCZ1QqR0jpYteRjvkU2Dux+KsruowW9qbxfy9THCihUNDfTuEnMdyKkwEqdNx9ueF3aVLiccp1XMthg9jhtAGfv7pflxalFv8p/mueEK8vNEKXHyfV8uM8fvKhEEJbhQ4zlN1KRgokf92lYkorZLABezy+O33Mgkhb7r9Sj6gUf+BoW1mAvFtx+GPZ+rScMJDaswGfkhaemQiWHTVNO38b4whvLfbD7muacDsxmkMmhaLGZd9SXooCCVTYI0YIM7mXCG88rES8pJ0/FF4kLltqvZEHH5uI84G0ZY2WAaPE/rxoMLZD+Zy52d58IA7q5Bhd+LYr+CDLXh9pLd3U+T88cFwISy9MzsKHYKUrZTtAtR1HC8+oIy4kG8qTXq0ci2S7ljEAdeuw1YmX17sqlRIMMX+xoNjOOlJFJWJI0Rhk0DtCMoWocRHdKm182Lh9Jm21Ux6DyWQMKcFKrEbfaBX00pkleBIgpU/QnHVSdhhyMEBenrcN67b6uD5FnYawz2nPAJQwaQ6FknwyrFoyhO7py/JOzm6OMlrhDrEQWhYIwtnYThgYAoklYiXxMdD03rjxXb+OyTwHIso94l23qRQDxFH7Wsh+tEOiSLZhWTsaSQlpaI31ajlxNiSEyWJ+1nKiFfOUU4mLHlCT9SCtkJ2jPKEBPZ7mNwJ3gqcH39szL/ldLS8juAG3kXKewhaPBbhjAo/BKIa7jwvJr/94dKgF1/bzJ+mMAy68mj8oHL43bKcNgipgT9CDt0HsSdRmevw4h3qDOJFmwYsu6U9lBPLy7D5G1ka626N10WrZ2ZdGM5EsEay+pBtwxhrWDKNgWWrlXZp3N8h8Kw7anaTsfp4e717AnI74YJQGhzwKFcGb7UPK4w+dV9TE0ZAPUj66RWOrVeAd74mQCwEtscwRmP/mplfiW0e2yRKDWQR4hnVHtuew+K412Bb5qOHoiJMQMD6ltkVGaNur+KMd5BcAC22KH1nPnmLi8hq7nOQZO2AoPTJEjNMMVjxC4STk6xmtmqyb5r+V7gb+zNp3EwxzaVh0cL5dJQC9RJnAxlyHfa4jzZj6Pv3TpO7RDIu7EHjvaliqb5X7y05nOalQsGwravhxGC96uw07JH9sceNcjwRdZgXuNFYCS95eAis4LYdRzifCBSM3nqMVNnmtPg3vGMw4dBJ1mEC/qorihRCkHFZQW11dpKW0/81s8qVRp/gDMb3hIK5LzJHGtSlV3HAxRrkHGBtdkBuC+AZjAvDd+N24JxUJXj7bfE5hhnRo7eY3VwtBfc1iNiKsiKwh4hjpOKtUz0QN2h8yVyHDC+GjGClzr32Z0Fwj4Hg8AC1VhXI4oupT0O0HnZPxAjyVnBTIUowdqmIDMVSpSBdp8gk8lbtQqPBJwDrIhlT4hPvF2zc2+QymqmUF1Z/fhD2qtCJ0d/iQAdKsvhXzPLZEwkrqYcvkJOVHybMpyEuMB9LKAtoz6Zwoyqew7qwciK55JnmbxOPUl1fO8fHyJr7yOLpQCQp4XxG4BW37tunpk9cYFV4K/6TT1iiQGZRv4Zc7rgpqfraM5dL0btdNSrQuJC0+5tviMYQIzu3KsZgZ5vIUqAWEH879qwLGdyyVdOYelMRTIn/WAnr1K/gcfANobWDSjyHdvSaB9fXuqgTgyyL3nNGSLtF1OLpy1+/d9WGeaiMtxcMXhrsjDyA+btXE7rBF/9C6MtvQqtC/7YXORosVK2gmsC5s/hGBNRxwP3hWoOz7LEZQD22VFCD2XHMKD4mB0XHyP63EybgWvrRe1YEQ4DBmSdOA+jzCl6sBv4M2C8nQmbjCOE4nNKOhDzOT7wXq1F3tA3kxb/IfWbLV+OtzA6BCHhpeQDuzZg9GSFdrYxMDy0PC4Kz5EdieSSn4BXt6JhbbJqbeQeftKoheyKNwCe4NuHOFSp2AihlgQJ5UjLYU0ue/kktEKyTIABPfxEV0+DrZhpSgasCb33J3jAUG406FZTn3jaJGfEt3UdVT9rfAjkqnRBSBRUBsjO4u+WeCzkg65K+WoSa+noxZqxa2HtyFGpK3QiwisYyR/Hye/JWJKrSbwWb/2fA+Zy9jyNeuBwlMznbM19FZ/lRDAqkcB0eWmQ0wpNWCDTjoCqXrg3vVMeC77RIYrciDRJ2WEKyE0nQBFBdS+y5nnBxzO2c2SZxwHQ44o3vbIBsQFb1ikWuaJrQGT8kZMi3n5CY8aqeHc81e6w/8uIwpwBohEd5Kl8vdLLnww9m/DbTGgeVFnLoxv075y6m5DpapsmbXRSjVINPTYYl2ydKtyBUSIIAHgin95oOjtvJAwsbv1hVZB+HznVlCmOsASC2HKO91WYcVeqyDR7uV+Uvg7oKpwGbkWntFubid3iiPGxXllB6+ZoTNq8VTmHre0oRRUdJw5zQ2dQmqj7vkjVFtZFhYBnKHBhR6OHXODjvE14Dg+2KVQnlbQVOzZzxbw3XV4NG8PpsqkhY8BqsqzIPWr+4y8IZ2TZf6t48AicnneTB1tjFlrOFmv/vcNyRxv2uhJkMA4JCnrhDamscn7bpqcdkZdcNppsQ1exr2ZTHbwwBEVeO2YBxYwwmeNWcenJE5Jyn8DRmSp1dx6swL+HRu9ZIZRyJ1ZCK2oVZZiztU4FyBEa8qhd138mE/2yrpwjVJMT0D4oD7zt/WKqMqJyuBQmxSpMvw35nbEs7c4ZBG6+HSv7//pBTXhUWVnzeRjmb4H76kKz8FhsIQL0vRZTHB4FmMkF+mHNMlJPNx01k60RjkXP3DEMfCVFXNsjBad0heLbnzaBDEB81hK3lJfT8k+cMSfw94NlxwKLJ1hdXSd7xlbSQ1Vw5hdJl0zH5SxY6qv89mcW69dyzb1hvO+PNv6to+GjHMWnladwMrUUvoNKGXrRCuvbUpV1DQBtYlzXUMFWrxCTRgl7HBCvBW3KkTqKwS9pxSN5/nhzYZCnHXjXb8TSMLz+Zl7yO9n/OilzN/jRQTE+DovapULYxntZAPo8YkuUmdMrYbN8RsNU9JUnuasxYyk1ExeythClUU1C8hU2Fx1VaNLwlJLCn6N5B/+tUC658MRcbvgRfFTnPCXKqEfkXJubs/ExG9NtokUzzZqy6TGQBTWktaTfDm3YuIWIFc6cnOIu3/86gsilzUrVIRKKpv9etU+qBVet86mkyxzqz9OnOdaOrCO8DA8ru5WF8hM98YEE384RCFkmzAFab8CQWcYC3lSiMQt7pGRzzPqADX17ktQGprYOe14disuekZD2FQKEGiuyss7MeLCAgfa/GnYZ5O8N+NVsVZ5cqUNJbTmzFvgtTUO0OXVr1OxnXszddpEnEdbCFtNvi4sPocpezS7kRev9fMMyeBNoXKcMesDEU2saDdc+bmBXC7jF9YROtnSR5O2kND/KRPn4FuMymM4cvDVPVop+4Me0j1rn/O4qv3357XBQhcVKez3vn62qTqa7U3dWZ+antTuTYw36lPHEG/PyMVeer0pZYKUau3WzQLAdlEb6lrNIw3Zj7qGx5lkaMWyMB14XNA80i6KfFTQxNWJXLTuTgtvXGxSE4+ZxQbRTX8OONOFnUcwAhzC4wyiEkid3lVWSd/8x5RrBqQZF9E2LUSE9V022JaP7wU4QXyR5DMAH35VMpC4l1mEorwtF0Tue4T5ZzAAttYzpaTAUc3FhR3EEKZatDJFoZh9/7NGoChV/ARb3fODbOMcKz9lYi1IIb8SjIQd+myrkxfiZKDW+3wWVjhwg9+4BHUSFEcF/h2pwNCZVz/D3bFoy3IeqoJJAFvman4S3xtGghD0M/FRbr/cJYrEvuas8gAlERBg3kFx74ztbydvgBicriFDZA+BXpxaOawvyEuyyNLIa75q4COm9X0Zyv9LiBNnuRdSYOpZosWH+S0wqgx0bW1WFSnRzy2Uf/lO1k9wauyOLTviBWCnCRLZYlEcEyBOx3Htd7nmIoAgU9A4bf0O1fjnpnMskd0nxkoC2Vqm7/Ad1NyNO2GowiI988vu/ppyGcmmCX4Suy0DNS/SCdmENClbVjl5x0RzWElPcfXlrjr0H+NfapPgU6aWUcM0IVZ6eBY+C1/MdSbSlud0bnmowHFHUV7jpQGoS1c+Qx0JELfa4+D1C1Y/18Y07i0x7KPkPl5+Bfr21wAdSGd2DjvtDiASaxkwmvijiIycRAOcu4npwkVFKUkfi+kwh7cmijYi7KD0DdzUn423EDci1IqmFLGDJ8tA3r1tFgkkjDRk056u1uAs9fGBGGrQRQFwjDrFj0Z+0OyUcZhUzlI0PEefVO2khRGFx/nRczQD0RiQi4knjPy1MmEUXbi6VxrTPn1dF71Qv7BrWrBU2iDxmp1cGVHW8MYfuyqeL8fuVtZWZR7T0qXzZ9T3P5ofD375p9hW8WY/3m9oiHS/BvM5r3wCXBkfP1tP/iPpci5eHXd6FcZddX/czYLnzMsj1M3FLUmOQaLhlBzXhhYnf2M3oKpDxvFf+59gPAPpLFCeReCNpp6kSvKKLbwGciOwUoyE9m6wUFYoGBcXn64SOka74RKds4leiLOXxdz51lBBoC/PQ8rOz0LRBqVGskt30IGuahW7nkmWM/MTvm/AknUTjhVj4VIRM4dqjGfydffV9llliNMgXH+4ItwnzMra8HGdfVdvddpgs7PA4ZGLjaMjD4lvgdmfgYBsMg5o4nsKPfWHFOtL7qV/yVPBisXToGRj9nzxz0IboXBU6vbrLB2yjy1Ys5Y3YktOzF8PbGSdRJJwT2RB50lfLtaNKhYaNXS/y9tWACMMBo817SHXpPv56uvaJ8ONmfutbDBf5wa7MXEGnBhlEBFmIg/mTtXrswpGTKgoaAAmv8W6OSlzRy/HPP9NTH4RzNqoF69xDD+mpvO4YBCTMlJUYGMjNupX3Df6g9XNVqZ/wc4KalW0b0vDjaPi74h6LZJUj/ToHbBEGnoP0chmRYZQ+l7O2EM7vcrNEQ+B8ITaDa7tppAt9igf0bqYQKb2DXL2O+YfKPgdeDK+an34PUrz9bU6/Ma2OmItLmYeWNhWCKDHKPxJ7c8p+mhNm+JCJf3/7pfU8CRSb+ThqyK1WmgibqZw6d7fJQAKoIU7R5np73JG44zuwVO7iPMXWWOtb1Zbas1t8eHgvbFFk4NTmSm+qfYJnOuwm9jC2IkN91jKUCqgPZ3sYrgz/dwGoCt2ciiwDEEEa+tRRKZf6BsyOX5uRV4YO5/BlMozafo19RCTFOI5KE4RT+pR5roIlF8NJ3+IWkRFX7CGWwEA0MuC8KZhwgnzexzklAuGjCBWquqUzwxtx7xNkaDQyEEZlk4EeODWHk4w+BFlHz2oDZjuMg+0r2fZJf8tv6dc4jxWiDhGiCx8F6s6MoN4m3CWRcPJGeIguml/tTWw0wny+fUMNuu2+xA+iTH5UkRrJjuLZ8GQ9CfULrAqmR9jEyD1H2N7LtaEdPTXHgxQdrPpuYv/z6o+FL8f5fkjLMccL+XunhHIsUga1MQQh5d8RrFWCATgV17Nlxr6FMonPYkWFjUuF/6bZkHNIVB532S/aO8ZIq13EDwdky2jCWB6lilQ06KehF4Zsz/U6S7LCht+qSCWamlI81dnxhRJUwOf6uCpJAa06JFFWthmSjGkYBUYbQBTR3uCxCAN69oAMuKNsRAJMxiFbDxADmsad1rH9BjXJYa+8Dk5jrcSvg+wNQM1SJDZjhSCzoXo35ycii8Bi1TPRF/WTUEE1b+4XDOQtVCO87xrpj4J7URjx8IG1JIbJTsFHrUCTg5QK1Q7OSx9swTa5ZaAofhhkeTokqhVi6Pe34sCdRYDfrJw43s8NfUjwJEmlRlDtINYzKu2TpetMauVAyuI7QLWDgKeAUiVvY5o9NpRjnVOrV+06a3l4O6Nv+uKcFU0QqNGlxvEP4+A6eTunfd9D9m6YClcbRJ1Dgu6unxeIl+Szp93Fvzs1ROj2R9nvzjfjpeFkpDyn1KlxDgCw3P9ZPnxZwcB6OJ6RpeTIFN6oxwBtvEMcRZaQm8HmrBufpQPNNoafDO3/lyE/DKsmYhG+tkX9peMjvwIaj1BS4Gbqj2Kb8CfokYfJ5EHO4xlAj1nvadHOwijbsZodDRa5wbTdTm0aCqfI8lQA60HrGRPDIRf8UpyGFoid3zsUeBqIq5xu90YB9O/MxVyRNT3dnWiKAFB9bWHq0bebWf94QFF85PRRPJJxRt7sROoW4+jYkA3tFfMv+ceAGupL/sX0YscZA5Q1uTJn8l3aEIPnDNA8N7BcgLW89FCs6n9HZRbAj1Z5/y2sLo7sZ/Uw+hD37VbcM/A32spS9YHltG9rFJLj7NrtnAX3MCHj0YV18ESoTulH8Yb2yfTMXHti7qBG2dTGj3mLTPM3Fa2NIhgDgNRSH5h136cKasq7JQAocfbtkGS4Oyp+v2uOhZIyCO8fnL/FLfxrLTyfV6IPswjrTbpHk5ELg6ZbFP4F0BY4MFbXS6vqWmlJLSXLYSF6WSKp26xHFwzb6wtqzyRiIP15wjw18eDxe1iwNo3m0FN1v6FdmrGP85NN5PA/Wp2etl9mkDZ2zix+vQF76pvS/xpaCleFMchvWFyUWzFqpyTm2c5lysvLbYw+qQJdL9+Gl4fuLOdM8GQLR44/z/OIgEcuy71f+LjT0PyAZYXMr5swd2wPtKIFjYX4/pgjqp/2d7H5sWcSgn2+z9aBdlh4YBu/96mTi74Cm6QqPOX2se5Yo0jfF/HVgeA72xX0ACd16oA1vZCZwcVy5YePb2je2TF4zPXG+FNH68jjllHBDDwYv0h/nEa/FjaPvq0tcTTfXK6qRL/JTdFm388gsb9JmrRP1ZjtarPab4Ade5JX8IlvbFBMSgy51WAdne+wQG/nf8CJ81eEEsTC5U4FXJJMOkd7ti3rnImq9Cf9ujFMXT73zIzLQbzv64H9yYGh735kG/sl+ZK98co7F6ItKeMT1O4d40ojP0EVe5zKl0GnxO40VU1oOLTlNmY9PFwUDIjQWoQR5I3vAEibMIi5zlDxpJufAhtmMLQX07SUzRyrpHCX8iBAp4lLsup/HTMg3eXXf7qlUybvb38CRSdVlUl14vYpMwHXpiFwJcNpVIBKlMNjp1NMzlOvzbJhUtWIgXep5QZH+H6oYHxQPN0OzBKjSBbX5pOtg71eK6C5BV283KAJmyKzLNhKXcq3pPh9ym9JY18+Sp6NkiSoRJozIyHGhnRF98sz5MM0ySZ6Sru5Hg9SRUVXLpYSUQSmk7pU1kYWfMKC8o7m9qGzw25rQj2Ex/WVEQ70XF0/x6S0gV4oX1Z2wMhiYvK9u+atwnD/lgW6lo4I7n+qsi4VG0FpnQy92GxbzhbmneMTJGHQ0n8Psm2rg3uoalNCWzL3d/u2S0nRXxMn/p8UPJLoO45lWkimSY6KtYYo+qoIb6VrqH4gAY/DfllAoixl9vhU/4XJKVwglJydYb283uUSiXgDKUJRTv+TbtZAKpiQn1W9nU020QK+SbL6CWhplwjvcfiS7v/Jj2dQjUyl7bEk9NfAcYRY5bwVfEVfJ97oH+vC7CHQZsC+fW7c5GbIrEerlPu2Vyz8iFsE67NZ5gguZPBY3dkSyTqOXGYAP5Mb/H1hjrRkXG2nnma1JCTCAukOgaOQThK/T6BITgAMWyx+cCQUTX2YQugM5F22MayKeVG51eEi1DYx4OqB6Kxql8IuKENBobwDySPjqdvGFoYfUcK/4gXnagTLFt/sNvIiBW5YX5fAHQ7qtD7UCErFqGUeO5q9rU+f3KB9jk0xZBsI+lsfgjwoQPy1LlY/ppSoBI268Xu/kLlXDWhN5PyW7PfIzOWu0ih6H49mgU3R7P9d17WT0Cegx5hGsln51fpUo1YYLERQtVu9gTx9tfXkGzQDSCuq1kxMD3aUIlbXwx48921PnRED54eXlDHmMwrV21iQzYa0mfNhwYhyfytUzr/9/d85p9qVRHD5Aeq8TZL9nrpMfQ+vmEA6Z+Oem+Zdwpd2pkBQyvmnozUcUj8sQwzOF4mHT81k2Pg6tf/FXvzbO86ldLyb21vyxn01EO0UO7j1qXxpA9nRFi3SPisiKhYxP4Kn9BYtMPPMLlno4S+fmcjwS2irpk+ncPkzykcRsUkd8LsOlSi5SAcxGbBnkqYOATmNGLrspeFeK4hwDyeu91AideQkp6tOyyhve5UHMWBHXP/AoTJTo3A4pq+jwlhzjZcDQ0rv0zXcTdQEQU8JF9MwqxYR6X8j/w9ACYzpj6t2+lnF0YdA0EyM9WQ9U/I/HNt1X/WUgeqbAbOfjoW4tL2fPGiONodKJtyzo7mj6xf3rJqhfvalmg/QZggHvGiVBoVdmKbnbDLPTnzFy6FonslXy3WvFhYNYajtBjI9go0NPHu51xHDBQMXCwjbwUX2iKWYtrOEMG0txm7+v5rtjqSnbI0Q4Zh4wD29yFnVk040OdT/oKLWWSiH7AM+Qcds504O/ku8TPwbA41eD44zdmMMH+7NKcmwEp15D2WxCfb/pwwE3MZzdbIaTDii+tiluGnsYUXHvGBTKm7pWiRCqyjNtUETNk6vlHt5AbAAhd+uVotT+BTq/ge9q/ZfjvjiWbtBzBxvEjh5DzQwEhYAzJICrqNrClLLFx9rA7tpLkLCEqwqu7gdax7pu6OVtQhbNZuvvgngishHPxDbxlQWVDPkOTd46OMpkE4zq7jBNMJ5ZyzDunwrzv2u9MJWDb5jg4UzR7X9F6mRjsdA0xKwd8h7PCyftRJtqW0wW8lNHIRCS1rdEwpkeB1LspkJd87hIk6y5E821VKLMwPH5QPporDdZhiAALNPiYHHgF7K7hEdEhKFSoFiU2F0Pgfbr4lF3cvxdAcoeTrm4vI2fdWBcePnMY5tWHzxHOeN01wmbsHPxNcKIn15Jz87qyZF5UfP6pkcetDyWbn6OGFUP+kE4FgQjrKKbxji5/4Dn6YTG/wLn/aVdwDln3FnkLtsuVU8QvNL+unpkPknVKYZwD4mFCkRKMlmkbE3w6sk8IBFn3sDnd2MNkXhdBuyDFuwvX2dBYBG5q5CBG07sMaBg3SVlxUqxxHgikk7PwdL3x2cExUryNGqt2T01tUXkboyKwDpVQtguzuQbdHzjXlQXLjPsb+LcujITLQqYPol/JYxKxefBVJHoS9kbLxFZ8ot7OwQE9kR89BnV8N1GzHh7fFIxU3vAx17gYKPARhJqK92hD3frDEYZPXlOQ++XXzKlB8lmEgwN21tFefRc3rB4uPwNQFiqgS6NWuOOKUuUyjpofQT4GT2zLLSeXHpowjCNpVu9EFKL3JSu5U9q0HOGeImJ+6dVL6EQ1oy/xTh1clLplrZujmtjjnp2OYoQDwcGn+9AkrV+RC3IDoJrqcvAbaJ/03kghd4xH5pcvd7FleM5FhGgKYsDj26QGi9gbLP3Z8j3ySuKTxiVeiVEfheWYsu2kKBYoD4HAR6hCphd54mYwoPArekJyW3o/T79r7Q7Un0cPAEuKy3EcgZCBDXVppS3dkZDeGSgtmlP1VVs2ThAOSWYrvW3jAQVu/Fu2PCeGejUdvXtNYUViE8JA0qj/3L2HHEuq71P6hK7E8EMU+wOQBO0ujOm3OGDOlkc2LquYd4uXx/C1XwUu+uIkBA5lHn/BunZviwEZLohi8CmvHjOAxdAMmXCAZ36AvyUXLMZGpyQi+JlGc2zpvn+FXSwQX/gONChSu5HD8O55wfSJdHL5vXM07+QCjFG1pmm84iVeOjWqzcfvhbWA2HoZujxD4JoLiELUGunWeQOXxbvzbDxtxbH4ts98vNMpspHLnnsHV6F6BUnWrCPPj7Nynlk4Yp79K1vF2HcrnskouDCPJGLVpEfLTRzwgpf77TM+Z16H4BwNRkuBcGeU4Quqi+KPyPjdpukzrzHAxpRQyYVgJZ29FWcPe6nGJlZIac9PpCcyUqpQnBqpq8JvllwzTgOLPF4GPjGwKtYZ5VvhtxxdUV9Pz7F814OOUwVWxVHByRC5t4GEEdHGOs8bUOqUBf9zALzXvw7xBNyDQlvF+uaKZmUCBpcRDKT0l0t6z365TPNEJPFHV+dpuBpr76k3uw/evQwr2G4gkpmk1oCM8ze7r5uGDRPG7HoX1vzMgwRsWEUk7fjlMrqpfyno9XsEVD67i+pm+/UfY+qnUX9JVFXJd+PNY7maGQ8dUodpx+uSaOjcdOGGlc/5zJV0hCGK1sWfV6U6ZDb8+Q8qZPpjSB7HgmhOYOmyYl5E299x9s3cdPSTKmAxCKdAWU/Gyp614xt5g7C0Zx1WLL+BA2TE3FAkmBvQCo+9z8TzuzUWaj5xqCYSY9QdK3SCu2p++sI2EJQKb9spKIf/nsz4ZRlgYqWQkm5qYGi8Gs5OWeo0qrGHRL3b4/YnduyhYotCtpR5SC8pTnNRb45NxYP3rQhTIsNMDn1014JKMJnAtcte463qaw2DZeb8u+G41XGSU0dpjJ+XuyjHopvLVQS0UjKkmMDiUmKKRLDyBr7nZ4yKpp0cbq0wT5OAnflYa0Mh2W4uzZwNnwBistxBjjsMEdpRDDsx1ZvgjSPHRmX0buHZ6zFPjwBzTYP8HiHJHvr9rkd0JTgK0IsciUDRsrNS03wEuagqDZHfV/Jm9hCY9bMH1+zP8sIYC2bTAjkZ3rGOv5lCgl3GDL2rDhtF/MonnrF3SD3N2boN+sVOmhZjgSifLLsdfXFnkCrkjCtRecxsSxXJQ2vhlYa7+/bLluTgynCOl6kKl0q3GE7ji6zvOFEErqfirZ4Ny+F5UXMsiRWR/gqfC/t1bD1SYO7qaYw+NqjP0T0j7QJIZw0QwjXohTpmyGX7Fhs+0MKwoJRxY0jvA542xzjvURF6bNhdcq3od/bMEJ1a3pOEaf4o/hKOEhKT3lPSyXtVhIocg751b3PEG8PGJEHKOehnyIzFsdrJTGolfUANdp4JOLQf7RhLZt8OQ2SjnXRLpbgS6XaAwjH8wgcUJxaW9AFmVVU0wKSSDkUXC8LAI1ZhzrRBFjvBulHRh2OZDNIcB8UmErGdHKs0h6EJVFQIwlmhVbno8aIx8kq1+J2yg5ICfPLHZAwEyOWO3NXTV7iqHcJHy1oMsEiHb1LlO36LJKXr30oIqjKuS2eGRro+3qCTEmzp1eMytNXpl+v9IV0n+VslhR/SzBHGfva6TXXozOBcl2a+QbTXFwroDtUrmJHnbnST3QHUN29A+xXz7ME3GRey5McKR1/uUlRd02JFL9QLHSQb8B3EmNZ23XUZCocerjr146hR/upXJ3jeqjM6gY4b0QoUQEpKHjCezLXp5p6QLQcKq0zlHAOR+0FcuiAcO7u3zSqO1CH1uU0ZFQgvkZ09BjL2gIhT1vZyvOXdpkawijdrI5ktp6NeNqb4tWmsTahyaEwk+hYb/0yzdtRn9iMIWWzqLqf0ZaSIY6uanKpo61bzIoP1ivIuix+V40EGdYqpceSRFBuRvkuMpdJxpLJOWWJf7qX6VjXdp727kc4jEhJhRZG/JqhakNZBjMZaO+qY5y6/aGcr0RsvtBtM+QliR2FQOMoqecgplQv2L/CRNf8Lk124+nBQ3wM1QB4Ud4AYQl9YuyQkMNh+AA7C0PAjGgTXpcdj+pGwygQEpV6U5ykRhuKAEPRPhmqUXXNjYI5DRtWNyF9d5CGPu5jfR4pZL2wP9t+lJNIB/NE0fAimqHQkFvgVCtfnWaatLEkAwhz4Ea/uehNAUu3zP8Ntm+QKUIHyK22rJSbkpM1O7GZ73vShLZn8alphdSdsUUhl6kg+pb6V0p4HXd+jyPFH8oaJb5mLYdjbREzDualdQa45sxiARnbHIzWIpNNM7qOLLTVszgy48dkcJHtRuDFR+u9pBgyATneLuDdVcRqvbbQsU8iQ1LHKNOOb/hf+0DaisiJPRLv7FNN+urjF9daRhB+NZJINnT6vWKmh2MGU4CqkiaXGPsoDXs1Vw3BeuOXjX9+2De06lWbAFXRKDJzCKeyI3DdNP3mPtT4wXjrECTGw2/vN61e3ZEfZfPJKLYNAQV+N3IjLOARxe+KiE8gbLMyeOVanEQyo/A2GuZSjiDTFa0nHvG+jZUn50O84KclVilODHxCdGhN9UgOwRNiQYpFD8eLtinC7whqOLdERXXwnVUaneHCRjrLr8yG6QNobyuWMvkzlnPzV2lvfbAdkCc+34/7iTtnKyR1w0lIm5Mqaix+OZKnVhRxXW3z1qs8etF40JmOurBhJxE9ETMiALFv4JFNDyDUPS8nhlPJKhgxvJg8jHA8zITzMoCbvKsNcJXQWplsFQnMfa9UyuorFcG8OogX9UyOhRlSj+UvRK5s+kEZkk/N4fy2tbsHTFaSOE/8oMhXjv8aQML8M4Pgey7wFTJxxhLPFPXvv0w6XdZG3NfubgU3lv3I+VJfFTt1aZMKr1016dLMs1zsL7d1FVkwKAsl298pxu7eUgwPdiV5k9gW0lEdj36da9RoVszQsb8bpyqfrIV/FGVy+VeZy4SFy4RKUQvsaVVMcKfSDPk0knYXoATRVojTj9Q+49MJQTVEm+eWGltfECQW+5FD4y5NzWVi7bOInjShpG1h7j284nBL68bIkQBn1jEocfcgGwF2aedTV4LSbB4ZqG6jLv8DlTsjlrBVOQTr7KU1v0of8OeN6qVmPSMNep8DUvoRsCBp6EHqUKkQH5gOpG10adhV8ABBN8O3o9RqRTlr+FAcIw6xqaPKEfZV0RTIb10YldiY6cNvX4ysiUfGHqhd/310QanbURVvMC/6HE2eMQOqZzPrMI/9So0I6DY6e3zTyy1judy4YeZ9kq7G8RBKWH2vrBzaRSaVCj3yzNsu//FwFNY+p2eu2Hh6WEcu9FTVS9pgKQkGqOMxr/ofqnKOFPZQ7HVJ3qm96Xpp9q428qmx21No52ai5nDRR6rtAuKAaMm7NUWpQrdGv0xRHBho6Ic30BdIgv8SToLsxBEhMYeD/li+ukJdiR+tEx2FbdOxk3zg12eSQ/6a5YjD7yuAfDr+e5kWkGu8Bkry552mzMSAlpoNXfcmZcG29IgMfayzP8poWcTGIPyFJrRAFO4cPyI8GvCfPO4ek3tTZJe6laOa1DRYliKcGHhLFwLs3ef/3YdLEjtIUu+3O+3crvUD72HvOOA84djtuRAZ5L2DlUxw4qmPsba4E9/msjLSMAuCClAcO30JupGZVjyAbiqIPWsbsbBEp4f6mYNxhLhesI+APM7sh4eVecBFm98JYjJSfrhRvnLF4BenOyiSlHb+ScoIyZFvhiA0XUJaTqcc5bM+CDlYxBixfzBbWoQarYpY1+Gy92t2gsMUvEOuNW8jvC4D860DofxPeE0MbQs6M/mrvIfPim4IY1E3VDwr41GIZIJG0LEw29MWoU+J7V/Rgf2s3lSG4Y9xPbY5KQ7rksMgtg2yw68sPIuEs6efVQaeAtVBuifbmrUh59ucbWRPyuN/zREGS5F6CxMmeteOlrJaSgVQiW3vmsTy2DM68jQShDfY3ssEIRyxyiwtQJAF40IIE7dAJ08yywKnXeBy9FLSOP/VUexIEbTPRbOpqF9LzesCjW6EXLmt9erU67xg2BkoLcW1B534udrmOu++Os4TxAI3bOj0IWg/ahBbxUe1/mEodnDTDYYOS3QFk1eScvqAlNxk5bxAiiLy2gq3MOTOogyr5Kupu8qmyo8ODXAfWPobxHzZMM3j07gi48pJsldjT8Kf2slqn3zeJER5gMfJtsJYx6Rr6GRO3hvIkjvrfWZXFdfTNzODhWtuIPXl3rE2g4hPF02Pw5BxNPVbphmyUx32TTEqfPn6bAMuOgjRs66acaQ0EZ4KAnhv9yrJGy3FxYiA4eyIswkk2XEzFTpUHymWu1AScBhw6CcZCwVA/VVasQcoZTSE98G4w5wB0ICA+jymPEIYpL3uWfpKGcACIfl4YRNnKYikdc9G1XvKwlmLJRUhGybbUZI7/xNQbWhWHIoDhnzEd5lLxtOr4hzp4oEf4hRCTSEQ+iyAVPe98nfPEC6ANezY3Onrb2hg6SfhUjVM03AD0jeHXubmCk5GNqizAt1g8uXDqRtGgwgv/SQQjph+u3H0tecl6WDyBApPKkZzlxmyPmThMI53upEALgwHkp+UOyKT7Kialv2dyxPBDJuXtF4ZY9eu0+SlWvO7yeH/aTwGBpNQJrGLar2doYdGX6tzmLzTajaebh15RSwARTPIeb/jCB2oNfp2Gczppt6JZF3BrCzk2y8C48lFWVv07v+aexJsOfItoD+obbRHWoObGFfYe/QvmJYmeONpc5rijvFqHdUDXUmRwBJPEencevB0b16mO9t9r4zObp7lF7hHJlYhqU/aoyAtIvJE3Xb4tpp03v/ANkGcevKCtuhCZysmtV/WYuY6Yxv5ManYzWeAMXzjTAbBmPN22ja38P/h0R+uaanygQaI3q7Yx6kvyDnlcheTTXmTxuEx85OLe99AbzkMO3C7fZMoOOvaFjH3X7sF5Y+r0FGwR3pKMx2kpx//ZbdxHL/VYM6XYJfHkLgX5pnuegcThCxU3JWdLnqEl9svQ7AXo3MBFL/FwMOULoyEmCtsq/um1sPXS371dakTD4cj4cSfPoU0IhrDbcGpBXvMr5zO0draTEXVlp7EabPNdT5Kvs7/rvRINk2dZTZ6v0sA2/f7uMNAUAsHxGvWvChNx4i/oyfuqDc6fuma/1lCmV19XXWsGVnL3I5K7x8LkQ+h/VXQacLQYs63HX0ZZBeqFpPMJCuPXDnxYBmOMVKiDdW5xR8PXHbEYMMaZqHL7cbJXEGDE0vlzhJtENXBMQaXhMk5r6SKrswrWh7QCbbNnimJxpaY5JpHePOm10nxiFDXPZTgdgKprUG2sMCd5hFQUTLr5b07XQ0caOrtphvxbnu3LouHmjYXC+YDKWQBa6pKN1Ca20Wz/c9i9mjq2ybWt/c+W0k5pdlKgEOSoqXNf50rRfFB+/bBOztjiBYefc8lPKA384IQW5biDWU6GXjGCnq6ribm0daZbg0H87KNy4SGT6AUZOzrN/wnyqq7pooOhMwJAVLFri46Y+K3SaT96zHFiRNRxXPESxCGqr5xT/91VvYQtNksjEAuIiyf8x3sD+o6QvzWhwRGK6G1DPiXENPhdLvdDN1ioZ5015vfTt/uI4ej0AvsnUyyDllV8Jbl4wxnp8Ug4DjJ28QCIMwA7GQGbhfNDpacOJVmyJ8KQkL4XXhg0VYEccHuP67TalOYnNjSRcRdzvBbtOoL3jzUFhqDV7tm/WiQv5JPR0akoVqxVtIoC+hl22Lm6ObmFSiS6/k2PjtJEG2khXN+PKtQhVq4vF9rdGxTK8eSZ/t3A/S68xeKl8DK8wYv/wHbQtmV1SWI6FO/3HXuKe4+VPvUo0aVQbG1tzJBtCxMnwmx8+rScLezOTRdbGLF+AOspbMu7Ep3A9mfUCsc3tIp8WNfYYaqsFU5vq0Rs8RDdcZhL83P2rAbqZ/8AVuH/1N4duA+zoYs1WHR4trdmIr7upX4aYr5LSeKKFa8u8EuLGGlWARIlaH44oBCYDjC6mMWm/KmhynoHWdLB+lCgv+IoPzDyV7xuJTaob4s9yvtAuiP5PfeMEG68K+5X1Pj7FgtWMg60c5BliwcwDZZyf58aClcMi830QLPWdu4iRim6VXSlfWaNORH4R5d0PDxIKZOIVglKsjpzvSE5Nu13EVw17zHStdsTo+kA+l2iYqg6166AtYiFH4tTRWjM8BtrC/Hb595VZFHyG3KLHr/nI2rATCdeCQaJ8SSsf+0HeSx/E1xgox/ExaAGiNm27222FJi4QZdMrOw0/sZhvJkKKGoNJdXTztViYqYLIS48Fs8m9+8fcHLnXTFytA/bTpEHttZ2nlKrVuAim8ZTb8yS+NlceRIT44UT9XqyyEBZ0jl23COfmRUniIdIg1O+svX/FnnjpTw3I3Wqe6/c6XXGa1NNHEa0SJpOwhgNHyDfpysPtm+75ULtvOdamzRjJOescx2FotoOkuRN73RJbIViF9VgPPWMiTrQqr21YYs3HDsMSHZ5PcAUa08sjOe3ydvJMr8cV3eYf81+9b7gBgOOVgxi55oaQ4/3gM4ccgv1sDxfKx0CuO4QabtYfFBopuHllsBleiIo+ihxpZ7urvzWpR192+WqghFv5nP+avKqQO+pRSdwpCuKocwFK9ZEDDDaPRV6gAUVmdCcjCtt51D4mmyQVyOF+P1G3fwaBZgJRNCcjTAbTr2ngTawG7xRowcBpU5AN79zKGyEaLbrDjB/Z1x/PNGz6zni00qKUpQBQdyGizmlVehgyZPc3FxwpdbOh39kuEW0DS4RxsIRGo2cMLgKzQ7UNKnD7uSX2dr8RHYwi9SDTLUDIvyji7NxeWZGR2hVqh6D9d80ORukgj0TTeGsMm1Q/1J9Cxhi/rGWxEOGmWbHaKiwooVz4XnijbmBFpJIBmu1b6MfJxc48ttYNmFGhcdJ/J8EQbcv1qrqw/kx4J+3tPMPqbHUPg8+KKV6kP1ffwH7O8udurvkLZrCUZGoSO04lEheRvfnJtSiXn/NGzGemgScul2YWxtvojdvNAkATWyQhBA836pFKZN45DHxD25e0O2qGYSx8w/CLggni7sCr9N4/x4yFFApbDTe74GKDN13MUNEff54y24aihmSnJHhSTzbVsCSNNo8WJXFLjvBNEwkP9LUZfTcA1O7kRjbDVzdFwnqH2F6AgyplK7fJsy3m2YwlluqQMn/2oFEh7jJjIEiju3Pgp36ts5nOkXd5GWlUP+JY8lxQKDVXvsqtwYZYUnZTyjCqpJKgyr/90YK1P2dc3k0a8mt1rQ/sacDNcHLuGWIqHOfDmwBSIFKmOS9RZ1TdXFHg1IbeU1mwg29yB+BoOeEuVXmVLX5ZpG2oyICpW42QxBCg2H9pJMO1XD0TrRAKoqdfTafdD3GirESUKjb0xGb032TNyO/KxOwKv/gZpn4gPJvw4/+ARZiC499C4OrKHmqqzCU3cmBLGaVfLDrDbZhgjRDsIRAVTtN0Zz0e8EtksAqEorNo+UlH3+o2szo4Wy0nprW8O2+vvxtJl1a/NaAiaWaFZPA9FEXiOSmZzeIYe44chUVgf6bs7AMd3wJidrz9sJsY6RWQ92ZRnDeJVuqT9VK98h/SoATCY24F9Y+lpJymrm3daD9fFchSHRrvQmGqDhmOcmVyZ+4IdP1pSsW9f1gfY/as26LrLDktuG0qREH9mS9rqdsjvpgdXA/m9ZxmhlA/uvgiroCa3yFabHkwzxxe4WfzynI9JgplAzZV/fX5RSzIkAbb0lEZww8Gg2BOi8UXO2WNausdMUFCYvC1J3HMa+lF8qsGSzLdATBcGXqK317I1g8hAoYGM4SZ9Z8Yat9AhWuvF7/cqLyF37EuMoAioqpFN+spaHYK6/nIrgcm50WfEFtijs+Dh7r8gZfhhYwr2G7eDMLK+fkYPMPp5jVOkc7oXSsgrd45Oq3t8fFNeqP6vq1FbF0JChMiCT7gce8++N+CypysXBjhjitF2BsY11B9YEBxRZtHeX0atz3FxBWWLYtUBopwgCTj+i64yOuXI7+zdocNP7ew+7oXqXRAOOmxAGKKbW+e9f8jVSaknDqpEr+W6HTBVWXk8LRwiuSz4qlk6ktUwW6cGMcup2BfIsIvVygvGYs2ox0oRHeuxVR2WtsUAxh9pxO30u2wRCCOpFQHM9GHgpAg9Gg1Z9g6WuKHSFzShd8eZmXpMdHfymxCqD+AYfpxAicR4ncLHSQcwRtPuYHCYj0DJuLEeRkCEg/CWAY5WdU0M9plhUMFAQKNRF7YGutFIdjoL2f9In1I7cn4wyonXRcp0i/o78j8Utpp6s3ZTJwPEm3Y91ED7+L/LPnzXq+mmL4+t7ZbpBenQsZyPym64fqlOJFx+QOumDHFsCiWDZxyCAAZrqFvYPPP437V6/PWhqsUXGwIXC8uG8X6wyuD/DOPBBSJR4rEe0XszvkRoLWCNh17siGA2viaYijMw56rip5ysRwcdzmrYhGUAK8fx2LB3T+KcN2HEXRVHydIgn/+cnj0n1xlodUDiuqgB0i4ofVu4tKfWPHrNfv3s5LimJKBZa5qHPoXYKgetdsp3QGW6syM8qOPE+hXNjY1GgmgU9423NkVP7Gz+kdeaJ2ewnYHXIqdKxSmPZ49WTX1EDmA21ccjQUwBu9nKk5sc2FZ6pKAD7DmfHXwYnxR1Lp6h4fJQw997fi0SGZUkc1XN+sbxIsP/+MTlrlx2G7rkoy7zebl8pAWBEbqaQr54po8dudWSbuR3stizn8mb2KlU5/mLaV7+VTxPoJ7OveDzwrRH/fBh0x8OsWfVoSFz2p0qes5LjsP2Z8Cn7Cgeg/H75VJIQoLyF/JhqdJTGv5hSUkR1+dyHnjrbybFDu01eAcJDfgZY66oYKctMN2wt/KbJin2+mPhb/WHMV+12k/0KNUsuP+imOXh3WEZSfMnwqesdtR8SJWqxgBNeJhZpwQzL2zhXZjNpdqL4UZHSvzh6Jk6MtL2MWOuJNearH8C2C53nM4LQr1ayI9fl7ntUVYv075+MSROJVtqOacCqT0fBIRRKzIoGj+3ee+sJPHtmHQssky4WfzppalFiNJJafQzucn+rgp3qFskOqFTEzmAJT5OPHt+LYErVJdgqQxetqxLuSyjU5cfNf0wDiW9VDRXkH4HUBi3+5igHNXi60ebtKw5Rt2aqkGygcgYeWgxGQBSh+9V9tWVwoc7/0lGk4el/6Q8gFz+my9jGSJpPr3jAKhDha1jMfVshBuClkirE3F8xrj7641PSf9sMADoI6MxFhnhIqB1gGStOn0UVWtlGxDMNbFFeVpNGjAFH17Awr0Wi/YsyacFbNGSQz667Krxx3aKAEiqVhI13fPBqJUKSnjcWdWsPYgOgI0CmfQKhVBScCKN4JQPDPbBY/gxDM9rVAXVCF7p1UJVIsAGONOXTZE355H/gGkhr3A61FiFjo2EOfYL8NrK6zD1rsPf62JM9fpzqm8T6ZL0BtAezyeH2ha2tzqbDfz8NATrOjskuxP78b9JC3gmRLvg3Q61PHGEm8gskbIxVVvmbpP8HVqO/iULlauAicbP7bKJowhknBmm0bZpoAwjqoPOrKxzawX6w+1ntl1IYqb/7UBtlX+NyoFk3XfshiD8lkFxirS7qbZyGEVtwjBLeQng5sQJtAQXnAxUF+Ery3/qvp0n2zy855IfsNj3BmJErn0WP/wvUYVPCQjeg+BB57PGvlZZWtWtcTPQcSme8tnfmU102UF5f/anjkpBkObysYL9kOL/1+1szirlD0Ax/CYB1HLPrkRXTStMc7t8uwRcg7KqDRxScBI91AgTbuoMF3UAqtuXIl1MGbAZIWYku2oU2poZb7NZb0sBi/nzZYPDlal61LX9HORWCLULwlYfnJwWdEUQgncy4Lal8CUtjJUSiBe528CVb7cEFcBDOCs7bzkbKMwaDhzCB2f4AYxSjUTKF/zoVeQX3CAzY7sqlTz2IxQH3Gg1LBRLyESsf4NEAhZoHoe/L+Qf/fbbchhhU5ZenOVHo8x7rPIOzVxC1fULnsl+ddRVq8T5cIK2IETRnkMO5AewvHKg/ZFLNvHxI257FlUF/WifBw501bY/DWAg7oQuvoMNyVpJis7vLSUQy1Zc+K8AieTcfBIx647SE14ukRKpF2sfcjdGYDgfpU0f86w8dRT+N9pJ7SDlc3QhFrRtN21l2eHyHBk8k0NHEAR6OF6l4zKDbsLA+wsDNPbcXeVw4f2tixScZiiRISqZlKuLU+WFkLhukHcMgunkJagRfMmtkt+QtYz18xhN/hjCngakIzIcbSibVL+MG6LmImn/mX+l8MdSROe4h4CnnQvbYA0twZU81KlDCVZ/iHKyVJOtKiWzL9UjEGyxmdNfMnSPfo8XSaa/I9kytra4G9Y8Nap7osxqRNKz7XotXMQvHSFQQRxBF/W61coQgkXpicHSHX+gLY+QyOE093n769qVSzhA7GMHLSdZMMoP4rvt0QzpZfpmsoBshVtMvJZkBrEV+ydXmh69YeVWI78e9lobbSWBAcslm2PN+NGZ3RYmSdg+lu/2/1/StYB316goxZKU+ieCWCzPCB/Fm+Lc9GHX3tZEQKInxZrV5Ec4AVWBz1sPd8ckJgcTG+arnh2KZsp/yVt5bnU6j6pixpL1+3oxjmoA9hdtgrpUbXZHdrfxHiD2OIHxKO4KI6FYS2BF8pJR0IJAvUagtppp3Aa8Y4nOuUfU0tQiUhhIlmGk/bWEAZ7JAOl4HBleK6ZW/S/TWrmqdbxwAkFhxc5JlMR/EbKL23A1MquJfK9RMJJw1F2wyUG6mpbgkjoskQqHElrTsD2empj2YFdMJ+t3nwPndse+zJGkT2ZljVoco9ZW6WAdKoj+NE6GTGNbE4gy77SCbEV60vXGgUXN2ori4xuIpIjhfqaUQpZSvgSBwS7udE6yC6zmPa/EIubDc2HZZlJHdhxokOuzCSwAuIEINLtzs21WZhLtBI2ucYK0E2oYequ90NuWhk2X0ILvcCBSJSPmOWfJUmaXCIeSc/obDk2+pGH6YkEwu4fRHjNOqA4MqfeJOTIUM8tzIw+tE7zTHJ1a7ljU1lPwsrMz16lHtnXxU2dNnL2CzFsNaNlDlSGAe50A/l1cOCHRmUXDsd+IFFPAsG4i4dbnRKbqRdPUh2RFfITXKt3qqTvB8Von9KgDDNTcsn67rwo85TXpS0v426hy+KUS+e9kThs/xPEsQBh0CEOhbXQB+jVCFH348u06KIARgv/6BN/22pPWMSaQdgCHPPftM/b7AuUb9lPEwRzfjkaekwHTa9SF6tsLBwVkMtW/WLHZGD0MtpIW6wy0c+ultPqxqkPuNs8oIvEfw8kvr4cjw7GlVFapZ/fdadMve4IgVVsvROMxPntktcl+hdL7oi3KBjVjdjw70m1KytZuBWVsi/KoZcyiYeIjjDM74Ea/8t5QrqJ2k4y0btjXsyH7WUpnXyROcuOm4apWbEj2wdlkFoXluPPu8f5ZAx/MYDayPiL0FGFq1cUY+t3txLhX1feA0dXK4RDtaKXeX65nmeYmyHCenjzQ8+s17+rsJasgk4+OLfvpJ9bwfyssDhndt/NRXba//2WsUoKyYHrE9AoFlQcmEzJJ4YXNrPTbOIYrqIFy6rwfZByyYiFIw/CugsmgbTYiLN1Fxi4kXCb4iXfgQdVhHG0shH1vANOllR4CwiazaJLkCrIDffRUbT3d/O65QXKPiCpYnsJ9uj7rtGejPCwnUD24GjpYmZpvfyykFlL2DSM/+LSbPrdEeXy4gUbp58If4/64eaLaNqXuZ1uBFnpjaPovCIuSJ2zui6cvTsVrJDAe13LZLTuC7oSJsvMqX4SWCx3sZV7uqViiD14dfhuvA5YBAgCpFzyMxccRMiZdIObcBE999K2Y6gpe4no+9H/uR2whiRxW/nEH3/3mNiJ9n0TJfLPsXmVsdL7g+zKVhWxcOgZhpCVBkO/c/1HEC+Sybh5v7Jim+w+wVUfd3I6ro2MFM2e41QkYeBiFNHuMRfoyq4qepAtWrivQ8Y/wTLfKrZDU25S8RDxyLE84TIaGOXaJBG3BYofsJwodXo3LsLfVmrhNZ+I1xbMKly35uWzLSDfmLqzun4+YWAnPVyu9oa1hfQOPwQ1/n+n/jqez1hZvrW1SVHk18T6OUpZ9Lffca8kECD/STG6UgL0o2aK3V5ZDklYINDaUQwgr0jDkffyZjNuD4AZp3iLGS6VbhOUznUMsc/FevQfQRVepF0+Eb+Z5vnW/Qr6MyU9yw5ZYS8FtaSpi8J+MaNfle8VGdnDvGX8zXPiC2nPy8ZAnT05fPeOPdx64QH3S8JTw1KNKNgd2m8n3pTf1xSJUWo+Jz6iktO7xCmiPonzQB0IM4/V0FqnXsEs/NwmEIMTi7lD7vQ0m4PrHvt8/I5gNu677iY+0me+pC8qsFJS17nlysXmbT0ZSv+hvOKAxFx6qSn+pWQOaAcj0AuG20y7EHWUm7duyW5j3JyjfuFvmtP21qZYpdL7gdUS18YeBFeB9I7oii5BpEJ1T5cYl2KOIY4LkCD/NNEmaVHUROZKciOdOA/LNi1v2bqxSuNeROUGTt4Sb1squ202TU2B0g7GZfcIIcTwlpnazOGWF7VfxY8USTmUz57JMPvBqXk5BcBdYkrYuKZHrWOQMOQp6HWbfbPqyEyZNw30c/vYaIzKqBpMHikBfF3XWbS6gtEUsHxBiuNrjFQ5hR0JIKFERqTWmdRQXWWY9RuoXgQ81yIoVPDAHa+lwNRkdk9fTbsB8ih+GELNrysh7DsepPVTKSpRgPzMy2ZgB0ipO/xokjPRcknskzGoswQ7gW8epd3F6UsHDBln/cYAeZUvhF8O924zZp0VEhhM8dVlEq73sawtyOulMwbIEpUoYSAXNOtgvsbv14cs7GpQ4XAyGY3/O/NKHIz0yuu+PeJTFS1HOFZRdsH3VU+F+eDZqhGMrl1Mmb0c0qt8UAQl4qPSTiez3QfI4bHk2tJqBbdKbnf1fF2InWFKbgDG8zNe/0hQjU4iDfeSWuWp6RfN/BvrN7AyXQzK/3MrPbPVczZ9eaXcbGpdE2xxy55tC390HgJ20+om8eUrlwaguiwlMp2b0ecS5dnnoF6BzztxamZQRsgRPl8Jq5y3iq3bEuQGa9iX+kv3AAJUvlHEVr7l68Rx5jGX63G1KavZZ8ofJITDVtUwb/iP+QIVQJjeFk0WABQCHSZzGSeSVeDYKYnKP8j3HLJYBbknC5u08HKiRfQaNgL/0BAo8Ap+Wbxym7Cqd8FlQ90GV35YJ9HVJyF/fMehhvm6aZSNYW0Ovq2Q1nGVQLv6/inHE9clcfs1wjxYbOsN3/Dryd11KRHDPyBB35GWxSBUazsRfPig7vUWpiA8yQFAdeUiOTth6UG9OFKnz+aut3Er41Xn68SRiLe877lnL+N1B+hsan0PL2TKeaRBRZE3aLfjB8FiKGDnTD+6Cgxq1MRBuwqTc2Seb03WDgagw9wC8FW0u1MkIT9FofTxicGVY/uU5NP9XmVHeHeoxJY7NSXK7j/86U6pT7oePU1DEdC2kHdZDSQ/SVhTQ/DMITrLkqHqViMahwq5OFrm214fSN7ktjuxbDu5bpGL0G1dmqswbQMO5XPKoosH3PTfyjmiwJyR8gFnO/XSShz3vQ/50iUXOJmvrdNlgWVAYgbgSj2G596F9gFBu8Cy0oeghpQmQ9Zl1zvkS3SVZA7Rnh9OjbHY27WHWiog0HcXxF/Y0EY4NHapMP2hvKOj1qpyyRv4W1B1IFZO00vxseE+a5W2d6+ruwjbMhKU5BGJx9nMjhchbHlh5XkSC7bC/DvLSUGrfSEBuWR94WYASLkN7erlj0IcktUqP+ZwxazAUUmTJFFGGXuXYUsVxv8DPDa4KrRR9EjVnzfWXFAXSoWxFx2eQpjPeQ8wKsOAiq92zNyUTRWMrZd69Eudap8YKYygaAd/q1t1eUuIarTooTi7lYOx5J4J2kmj1Z2Xdhg7RnJ0NwCRz+hOU/L166a6Gg3Wdq102Jtoclcs+EtKdcVhvWzgK6lNN61CVyLjsB0dIuu2H7qW4sA/amvP4eZGi8CokGx59fVSKseommOH1vV8s283Jphobg2Th0RbWCgfrcdEHaaN94chrsjrgloYInDpsleve1gPpuDNq5n3IOaRiFNIayI8xYOxpHZQya2jV51PGxKGsqw/M7l2Is52JKz+925gNqzVun083gYVFUSFb2MsNpCDLXmlQ+OWb3Lo+VXnM42B+Joo12MTnPQ4mrZgxmln34tiAL2tdNv41HJLbDntRi9G8UiCJThbNVzjH9Q2jqdmFfYUNxxwjaioy4UyXYPmPHbolVWyqc/r6NiVflHMR53Kpedshy+ue+hMIphb5MemzoAWqIgK6om9tNNLIorXdEZNtN7z3GE/vEj7AkVHrnDoRqA4uA+e6+YQUGzXbr8jhFBSVmUWqv7fVxxLw0X2yGytPfzbaxLIqx3PcLmUgs6wKABtWohCeCWVXIuK25hnUZ7GXI+8Bi4nHT2gbuIbHshWMcXSDdorh/ES26g1tey4YneH6sbuPI/RpCyxUY1vN8lMqv5tu9MF5jQyi+2QN2qH6WDslLtdIn/fjiaY5Ehw0kjY1/XtKmE2dd+QwsVcGdUCNVSZaXrjier96A8lgRTGYpSSdmB1D35jPv4jBeo4ZaeExpUWrRfdMXwcWFqGVqiA10P0oZv4Ab8BoQWT+SlDRmNsbJGFPwF5bRKNTkuabalqOEryM2IDQDrkdTHJCiaQJb1fO1nBtTb/MGasiBXXtFwJ5dfjc/dQcLR8cdeIVi6/lXN/t+8On2esI3o2X+RBFc043brWkiQUk866v5duL+HpQLMMJuOpeSHkM9fVOq/ALvKS40jrskzMp4Hl5D9oI6s6qpbjm/PwYe4PdARjBPmmOISo2df4tDDLigvI2JECnxb5Ck9Pwv8CCmreZl9pjO3b5JK60DowrhgrnVkEmanJawJcCm6nVOUsFO/xwGSS9wtrw1Dww/yA0z5UVeoGWIdFFlZFxQ/vV3ROJGYHDyd2F5kmvyCoM2SWUsaOa9cAw/dgNxxyUxVUr6XFjD+4atY3w7NJfCzBDygbh9116mGPpNtN4mefdS5gA859E1e6mWgWfXj3rL6P239mZRsnX4ooEGIeRewM+q2UAtlxlybI4wxjvckatwKFi4ucEG0pbtdcBV+xw4pGsR9gOVK4S+M74irQ97ooJOvN3QGYkjTRJqnxQ4ZeOGqJxZCalUJ3KsA04FYpywtcQc2W+tYRo7a0ZHzzujg7Z0rPH5Wv1Kagi8XDQnzvTfHH/JCZzVfXU8tfP+c/kg/742Y3Gosw1rd1DdCXlu0tQf1V9Qrj5YVe7eti8TEQlTVZkWVpEQTfFj7OZJC8YekBaXVpa7A4LALfflsIfcfbU8zwD9TWrKX7sopGIE4GJv0tEbv/Fsvqwz37gVEkoqAJjJpjodSHXrpN2FIwJlc6hEmGPF79D4Jp5G1xxFe8CFOVCf4NrpEY0zj0q78z/bEZghJQSsfKKauCtTaYajdH0Zp8MykSqUHwyhWfMOsq+RYSKIBMeVn9jvI7201Vy0l6PRcQ5a3bSaQWAN6gPsYnJy2JFY33On9HjkwJ9VtSkcWz5yaaGaZL4sKCLHMAMwQZMzygAHg2PsIYVSt+RyINBU7TPZB3wHD5ETGGRQR0xIy3QEeCcKH5kVv8/BgynOm7S21PpIpxkBaIQg5rxPuOrMHXRokDl99bpCg7S+9+VXJkBKL+lKIWtLPR6xcJRNWqlJQ8cQlFfENxZ0LHQLXfRymRLHRS1D+ccmKPdXRDY8NXRsvnCIhsn1joINJFpw4qdkzsiihryw/l3DscjdphuWQ538Tv7tGFgEPxHnsT3+FiULdAOvFPJjNax44Dk+4CTV90+DKGEtf/bfABmRfQ8gAiC1qK3r5aeV+RjukB6FcutjipxIeCRPvn/SxO/M24FPm+DWHlL57TjU73y70DvJbHsvPD9VpkIFtZDk3ZI6k/DB4zKz5fjR8sgeDtnOcUdTxxVqPqn3C00nW/8EyuyxNJ9PsawQ/LjlNz48UVKKvtXAWgvt7IzKGgAZjQiP4jJ/YgPyvCUnG7GvymACewI820nfaxawm9Ir3s4YQQSH9LbnIjNwibCSSghwvPXjdj+GKPObdUuu4u4i2hkyfT+xqHa93LSJggHs7n0CCc6cv5uZwDgcPCWapRUBxncgdkF9VItjOF3+yT31reF9US5yYYCKNT9/6AvG1H4U30pdgVPyF3bXTUH2NxZXR/SufQZxcoZjRRXA17fYbZRAUbqNIrt6bw7sAd/ojDUFnP8aN3L+AyOHIfuWKIzRyun2AvsvZoLbLJEx+wwLxbXro4Ngu2vuMEPDzxoS8vlGqNm0ziGGFtmmRfPeMCxmnBG8IHPj9eGUUsGieOZYJGfjWmJbfIufrE35cTTkMDreFAK+Ar6mu+M63Z6QdRrbw7mYcYkTAtWriQrcOHQzEminCtwu8clnpPb2I2CzXHemiLwdQYaNVFgYqikbwv+BxhGLEEhLHIpZLrivJ25u/px7FXOq+cZtPZ+fsv7LNkQ7Jxu6zlxSJejhSaVgw7qy/pD0NtwmQSseKnFK6C8tgEYZWf/BLLD94lOHZkq51Sx6zqEYtvWjZL6pDcQ+3zisaz24D5e1Mp74kLPsoJF/jbGVI5NeNVkXS8gBh7Vp4k1FzDCVKTwBv2awbqkpI1t51EVXZVlmzoOCh+PfPgP2Zwv1+7OQVv7GkIS1iGogP2uKy0i0/FtGuN9MenJ2Z3azxj9UK2/k68p3RxwLtUJZdOLw+fX53zlfhm2kC38hPV2ImbpECckfWqLCB63ciE896HGRw71//0BNwQmm8sWG8TDlogjpa1A30xaA+lXsmAEqpinmKsRX9VJhn4OMy08zuiSKxs5MoZ7Mmlg3Ix8wQCCwHQ7HX4M+Jt+qIfRuIqPXJWy+SnLwHf/cY2lGgO1ud7gysTG3ms7p8xeGJd2TIW99SClhddLz1w9I8K8EsS2H10pyFlPCb11ngRM4NMBrzD0HFoa9LIUt8IQth4dJdZUMshx/N0hiagvLtxnXNiN3eaiU+LvjjME0sHQThZ2CUR7wRJXuS5j0QgKeos10+DwNIEjkRJr2noFIWrNET/NDN56smD2334ZIZDLRmOXo6x2v1SxvZZ25QV3g2dMe9QymPLqGDz+SqYsaKD2HIJKSBa7Fn7UYOk/Bsc+VV7ZHFJjqactPqaxDL0hfFl+ItfgEOWAIB/GxrFjz0X6gaz01qhyJX//+01hQ57FakrzjUJBt5zcsYpXnnR8Izgp2tUn8deTdQoJ0OdX/DB0H0KYVWzv+J84RY")); \ No newline at end of file diff --git a/src/Future.js b/src/Future.js index 34d892e..bfb7720 100644 --- a/src/Future.js +++ b/src/Future.js @@ -292,7 +292,9 @@ searchElement = value(searchElement); } return searchElement.then(function(searchElement) { - if (fromIndex === undefined) fromIndex = array.length - 1; + if (fromIndex === undefined) { + fromIndex = array.length - 1; + } return array.lastIndexOf(searchElement, fromIndex); }); }); From 276461cefba748d7a7da2c9d31e4446f889fb9e0 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 7 Jun 2016 11:18:28 +0800 Subject: [PATCH 32/86] Update to 2.0.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 260d7d7..e58df3a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.8", + "version": "2.0.9", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.", "homepage": "https://github.com/andot/hprose", "keywords": [ From e4530a75928755407a36efcf1fb0b049ca42f637 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 4 Jul 2016 03:13:34 +0800 Subject: [PATCH 33/86] Update to v2.0.10 --- bower.json | 2 +- dist/hprose-html5.js | 48 ++++++++++++---------------------------- dist/hprose-html5.min.js | 2 +- package.json | 4 ++-- src/Client.js | 46 +++++++++++--------------------------- src/CopyRight.js | 2 +- 6 files changed, 32 insertions(+), 72 deletions(-) diff --git a/bower.json b/bower.json index 377821b..d2261cc 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.9", + "version": "2.0.10", "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index e95fc9c..2521013 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.8 +// Hprose for HTML5 v2.0.10 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -3930,7 +3930,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose client for HTML5. * * * - * LastModified: Apr 1, 2016 * + * LastModified: Jul 4, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -4897,14 +4897,9 @@ TimeoutError.prototype.constructor = TimeoutError; _invokeHandler = _invokeHandlers.reduceRight( function(next, handler) { return function(name, args, context) { - try { - var result = handler(name, args, context, next); - if (Future.isFuture(result)) { return result; } - return Future.value(result); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(name, args, context, next); + }); }; }, invokeHandler); } @@ -4913,14 +4908,9 @@ TimeoutError.prototype.constructor = TimeoutError; _batchInvokeHandler = _batchInvokeHandlers.reduceRight( function(next, handler) { return function(batches, context) { - try { - var result = handler(batches, context, next); - if (Future.isFuture(result)) { return result; } - return Future.value(result); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(batches, context, next); + }); }; }, batchInvokeHandler); } @@ -4929,14 +4919,9 @@ TimeoutError.prototype.constructor = TimeoutError; _beforeFilterHandler = _beforeFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - try { - var response = handler(request, context, next); - if (Future.isFuture(response)) { return response; } - return Future.value(response); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(request, context, next); + }); }; }, beforeFilterHandler); } @@ -4945,14 +4930,9 @@ TimeoutError.prototype.constructor = TimeoutError; _afterFilterHandler = _afterFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - try { - var response = handler(request, context, next); - if (Future.isFuture(response)) { return response; } - return Future.value(response); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(request, context, next); + }); }; }, afterFilterHandler); } diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 5356c2d..cf1d0dd 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/package.json b/package.json index e58df3a..c85019b 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.9", - "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.", + "version": "2.0.10", + "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", "homepage": "https://github.com/andot/hprose", "keywords": [ "hprose", diff --git a/src/Client.js b/src/Client.js index 10c166a..57aaa5a 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Apr 1, 2016 * + * LastModified: Jul 4, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -979,14 +979,9 @@ _invokeHandler = _invokeHandlers.reduceRight( function(next, handler) { return function(name, args, context) { - try { - var result = handler(name, args, context, next); - if (Future.isFuture(result)) { return result; } - return Future.value(result); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(name, args, context, next); + }); }; }, invokeHandler); } @@ -995,14 +990,9 @@ _batchInvokeHandler = _batchInvokeHandlers.reduceRight( function(next, handler) { return function(batches, context) { - try { - var result = handler(batches, context, next); - if (Future.isFuture(result)) { return result; } - return Future.value(result); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(batches, context, next); + }); }; }, batchInvokeHandler); } @@ -1011,14 +1001,9 @@ _beforeFilterHandler = _beforeFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - try { - var response = handler(request, context, next); - if (Future.isFuture(response)) { return response; } - return Future.value(response); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(request, context, next); + }); }; }, beforeFilterHandler); } @@ -1027,14 +1012,9 @@ _afterFilterHandler = _afterFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - try { - var response = handler(request, context, next); - if (Future.isFuture(response)) { return response; } - return Future.value(response); - } - catch (e) { - return Future.error(e); - } + return Future.sync(function() { + return handler(request, context, next); + }); }; }, afterFilterHandler); } diff --git a/src/CopyRight.js b/src/CopyRight.js index 0341c6e..4315524 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.8 +// Hprose for HTML5 v2.0.10 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From be3101e3f842c8b25276e6ff48687c874b6fbae1 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 14 Jul 2016 01:06:08 +0800 Subject: [PATCH 34/86] Improved Tcp & WebSocket Client --- src/TcpClient.js | 26 +++++++++++++++----------- src/WebSocketClient.js | 4 ++-- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/TcpClient.js b/src/TcpClient.js index 85c5cf9..260b315 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,7 +12,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Jul 14, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -142,7 +142,7 @@ fetch: { value: function() { var pool = this.pool; while (pool.length > 0) { - var conn = pool.shift(); + var conn = pool.pop(); if (conn.connected) { if (conn.count === 0) { conn.clearTimeout(); @@ -195,12 +195,14 @@ sendNext: { value: function(conn) { if (conn.count < 10) { if (this.requests.length > 0) { - var request = this.requests.shift(); + var request = this.requests.pop(); request.push(conn); this.send.apply(this, request); } else { - this.pool.push(conn); + if (this.pool.lastIndexOf(conn) < 0) { + this.pool.push(conn); + } } } } }, @@ -265,7 +267,7 @@ fetch: { value: function() { var pool = this.pool; while (pool.length > 0) { - var conn = pool.shift(); + var conn = pool.pop(); if (conn.connected) { conn.clearTimeout(); conn.ref(); @@ -275,11 +277,13 @@ return null; } }, recycle: { value: function(conn) { - conn.unref(); - conn.setTimeout(this.client.poolTimeout, function() { - conn.destroy(); - }); - this.pool.push(conn); + if (this.pool.lastIndexOf(conn) < 0) { + conn.unref(); + conn.setTimeout(this.client.poolTimeout, function() { + conn.destroy(); + }); + this.pool.push(conn); + } } }, clean: { value: function(conn) { conn.onreceive = noop; @@ -291,7 +295,7 @@ } }, sendNext: { value: function(conn) { if (this.requests.length > 0) { - var request = this.requests.shift(); + var request = this.requests.pop(); request.push(conn); this.send.apply(this, request); } diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index 54b76c0..82a3965 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Jul 14, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -84,7 +84,7 @@ } if ((_count < 100) && (_requests.length > 0)) { ++_count; - var request = _requests.shift(); + var request = _requests.pop(); _ready.then(function() { send(request[0], request[1]); }); } if (_count === 0 && !self.keepAlive) { From 23fb37930fb0a91383850cde5d934de7b482a453 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 14 Jul 2016 01:13:19 +0800 Subject: [PATCH 35/86] Update to v2.0.11 --- bower.json | 4 +- dist/hprose-html5.js | 6376 +------------------------------------- dist/hprose-html5.min.js | 2 +- gulpfile.js | 2 +- package.json | 4 +- src/CopyRight.js | 2 +- 6 files changed, 11 insertions(+), 6379 deletions(-) diff --git a/bower.json b/bower.json index d2261cc..94b7c94 100644 --- a/bower.json +++ b/bower.json @@ -1,8 +1,8 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.10", - "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", + "version": "2.0.11", + "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", "rpc", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 2521013..bc5adea 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,6377 +1,9 @@ -// Hprose for HTML5 v2.0.10 +// Hprose for HTML5 v2.0.11 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * Init.js * - * * - * hprose init for HTML5. * - * * - * LastModified: Feb 23, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global) { - 'use strict'; - - global.hprose = Object.create(null); - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * Helper.js * - * * - * hprose helper for HTML5. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - function generic(method) { - if (typeof method !== "function") { - throw new TypeError(method + " is not a function"); - } - return function(context) { - return method.apply(context, Array.prototype.slice.call(arguments, 1)); - }; - } - - var arrayLikeObjectArgumentsEnabled = true; - - try { - String.fromCharCode.apply(String, new Uint8Array([1])); - } - catch (e) { - arrayLikeObjectArgumentsEnabled = false; - } - - function toArray(arrayLikeObject) { - var n = arrayLikeObject.length; - var a = new Array(n); - for (var i = 0; i < n; ++i) { - a[i] = arrayLikeObject[i]; - } - return a; - } - - var getCharCodes = arrayLikeObjectArgumentsEnabled ? function(bytes) { return bytes; } : toArray; - - function toBinaryString(bytes) { - if (bytes instanceof ArrayBuffer) { - bytes = new Uint8Array(bytes); - } - var n = bytes.length; - if (n < 100000) { - return String.fromCharCode.apply(String, getCharCodes(bytes)); - } - var remain = n & 0xFFFF; - var count = n >> 16; - var a = new Array(remain ? count + 1 : count); - for (var i = 0; i < count; ++i) { - a[i] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(i << 16, (i + 1) << 16))); - } - if (remain) { - a[count] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(count << 16, n))); - } - return a.join(''); - } - - function toUint8Array(bs) { - var n = bs.length; - var data = new Uint8Array(n); - for (var i = 0; i < n; i++) { - data[i] = bs.charCodeAt(i) & 0xFF; - } - return data; - } - - global.hprose.generic = generic; - global.hprose.toBinaryString = toBinaryString; - global.hprose.toUint8Array = toUint8Array; - global.hprose.toArray = toArray; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * Polyfill.js * - * * - * Polyfill for JavaScript. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - /* Function */ - if (!Function.prototype.bind) { - Object.defineProperty(Function.prototype, 'bind', { value: function(oThis) { - if (typeof this !== 'function') { - throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); - } - var aArgs = Array.prototype.slice.call(arguments, 1), - toBind = this, - NOP = function() {}, - bound = function() { - return toBind.apply(this instanceof NOP ? this : oThis, - aArgs.concat(Array.prototype.slice.call(arguments))); - }; - if (this.prototype) { - NOP.prototype = this.prototype; - } - bound.prototype = new NOP(); - return bound; - } }); - } - /* Array */ - if (!Array.prototype.includes) { - Object.defineProperty(Array.prototype, 'includes', { value: function(searchElement /*, fromIndex*/ ) { - var O = Object(this); - var len = parseInt(O.length, 10) || 0; - if (len === 0) { - return false; - } - var n = parseInt(arguments[1], 10) || 0; - var k; - if (n >= 0) { - k = n; - } - else { - k = len + n; - if (k < 0) { k = 0; } - } - var currentElement; - while (k < len) { - currentElement = O[k]; - if (searchElement === currentElement || - (searchElement !== searchElement && currentElement !== currentElement)) { // NaN !== NaN - return true; - } - k++; - } - return false; - } }); - } - if (!Array.prototype.find) { - Object.defineProperty(Array.prototype, 'find', { value: function(predicate) { - if (this === null || this === undefined) { - throw new TypeError('Array.prototype.find called on null or undefined'); - } - if (typeof predicate !== 'function') { - throw new TypeError('predicate must be a function'); - } - var list = Object(this); - var length = list.length >>> 0; - var thisArg = arguments[1]; - var value; - for (var i = 0; i < length; i++) { - value = list[i]; - if (predicate.call(thisArg, value, i, list)) { - return value; - } - } - return undefined; - } }); - } - if (!Array.prototype.findIndex) { - Object.defineProperty(Array.prototype, 'findIndex', { value: function(predicate) { - if (this === null || this === undefined) { - throw new TypeError('Array.prototype.findIndex called on null or undefined'); - } - if (typeof predicate !== 'function') { - throw new TypeError('predicate must be a function'); - } - var list = Object(this); - var length = list.length >>> 0; - var thisArg = arguments[1]; - var value; - - for (var i = 0; i < length; i++) { - value = list[i]; - if (predicate.call(thisArg, value, i, list)) { - return i; - } - } - return -1; - } }); - } - if (!Array.prototype.fill) { - Object.defineProperty(Array.prototype, 'fill', { value: function(value) { - if (this === null || this === undefined) { - throw new TypeError('this is null or not defined'); - } - var O = Object(this); - var len = O.length >>> 0; - var start = arguments[1]; - var relativeStart = start >> 0; - var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); - var end = arguments[2]; - var relativeEnd = end === undefined ? len : end >> 0; - var f = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); - - while (k < f) { - O[k] = value; - k++; - } - return O; - } }); - } - if (!Array.prototype.copyWithin) { - Object.defineProperty(Array.prototype, 'copyWithin', { value: function(target, start/*, end*/) { - if (this === null || this === undefined) { - throw new TypeError('this is null or not defined'); - } - var O = Object(this); - var len = O.length >>> 0; - var relativeTarget = target >> 0; - var to = relativeTarget < 0 ? Math.max(len + relativeTarget, 0) : Math.min(relativeTarget, len); - var relativeStart = start >> 0; - var from = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); - var end = arguments[2]; - var relativeEnd = end === undefined ? len : end >> 0; - var f = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); - var count = Math.min(f - from, len - to); - var direction = 1; - if (from < to && to < (from + count)) { - direction = -1; - from += count - 1; - to += count - 1; - } - while (count > 0) { - if (from in O) { - O[to] = O[from]; - } - else { - delete O[to]; - } - from += direction; - to += direction; - count--; - } - return O; - } }); - } - if (!Array.from) { - Object.defineProperty(Array, 'from', { value: (function() { - var toStr = Object.prototype.toString; - var isCallable = function(fn) { - return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; - }; - var toInteger = function(value) { - var number = Number(value); - if (isNaN(number)) { return 0; } - if (number === 0 || !isFinite(number)) { return number; } - return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); - }; - var maxSafeInteger = Math.pow(2, 53) - 1; - var toLength = function(value) { - var len = toInteger(value); - return Math.min(Math.max(len, 0), maxSafeInteger); - }; - - return function(arrayLike/*, mapFn, thisArg */) { - var C = this; - var items = Object(arrayLike); - if (arrayLike === null || arrayLike === undefined) { - throw new TypeError("Array.from requires an array-like object - not null or undefined"); - } - var mapFn = arguments.length > 1 ? arguments[1] : void undefined; - var T; - if (typeof mapFn !== 'undefined') { - if (!isCallable(mapFn)) { - throw new TypeError('Array.from: when provided, the second argument must be a function'); - } - if (arguments.length > 2) { - T = arguments[2]; - } - } - var len = toLength(items.length); - var A = isCallable(C) ? Object(new C(len)) : new Array(len); - var k = 0; - var kValue; - while (k < len) { - kValue = items[k]; - if (mapFn) { - A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); - } - else { - A[k] = kValue; - } - k += 1; - } - A.length = len; - return A; - }; - }()) }); - } - if (!Array.of) { - Object.defineProperty(Array, 'of', { value: function() { - return Array.prototype.slice.call(arguments); - } }); - } - /* String */ - if (!String.prototype.startsWith) { - Object.defineProperty(String.prototype, 'startsWith', { value: function(searchString, position){ - position = position || 0; - return this.substr(position, searchString.length) === searchString; - } }); - } - if (!String.prototype.endsWith) { - Object.defineProperty(String.prototype, 'endsWith', { value: function(searchString, position) { - var subjectString = this.toString(); - if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { - position = subjectString.length; - } - position -= searchString.length; - var lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - } }); - } - if (!String.prototype.includes) { - Object.defineProperty(String.prototype, 'includes', { value: function() { - if (typeof arguments[1] === "number") { - if (this.length < arguments[0].length + arguments[1].length) { - return false; - } - else { - return this.substr(arguments[1], arguments[0].length) === arguments[0]; - } - } - else { - return String.prototype.indexOf.apply(this, arguments) !== -1; - } - } }); - } - if (!String.prototype.repeat) { - Object.defineProperty(String.prototype, 'repeat', { value: function(count) { - var str = this.toString(); - count = +count; - if (count !== count) { - count = 0; - } - if (count < 0) { - throw new RangeError('repeat count must be non-negative'); - } - if (count === Infinity) { - throw new RangeError('repeat count must be less than infinity'); - } - count = Math.floor(count); - if (str.length === 0 || count === 0) { - return ''; - } - // Ensuring count is a 31-bit integer allows us to heavily optimize the - // main part. But anyway, most current (August 2014) browsers can't handle - // strings 1 << 28 chars or longer, so: - if (str.length * count >= 1 << 28) { - throw new RangeError('repeat count must not overflow maximum string size'); - } - var rpt = ''; - for (;;) { - if ((count & 1) === 1) { - rpt += str; - } - count >>>= 1; - if (count === 0) { - break; - } - str += str; - } - // Could we try: - // return Array(count + 1).join(this); - return rpt; - } }); - } - if (!String.prototype.trim) { - Object.defineProperty(String.prototype, 'trim', { value: function() { - return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, ''); - } }); - } - if (!String.prototype.trimLeft) { - Object.defineProperty(String.prototype, 'trimLeft', { value: function() { - return this.toString().replace(/^[\s\xa0]+/, ''); - } }); - } - if (!String.prototype.trimRight) { - Object.defineProperty(String.prototype, 'trimRight', { value: function() { - return this.toString().replace(/[\s\xa0]+$/, ''); - } }); - } - /* Object */ - if (!Object.keys) { - Object.defineProperty(Object, 'keys', { value: (function () { - var hasOwnProperty = Object.prototype.hasOwnProperty, - hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), - dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ], - dontEnumsLength = dontEnums.length; - return function (obj) { - if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) { - throw new TypeError('Object.keys called on non-object'); - } - var result = []; - for (var prop in obj) { - if (hasOwnProperty.call(obj, prop)) { - result.push(prop); - } - } - if (hasDontEnumBug) { - for (var i=0; i < dontEnumsLength; i++) { - if (hasOwnProperty.call(obj, dontEnums[i])) { - result.push(dontEnums[i]); - } - } - } - return result; - }; - })() }); - } - /* Generic methods */ - var generic = global.hprose.generic; - - function genericMethods(obj, properties) { - var proto = obj.prototype; - for (var i = 0, len = properties.length; i < len; i++) { - var property = properties[i]; - var method = proto[property]; - if (typeof method === 'function' && typeof obj[property] === 'undefined') { - Object.defineProperty(obj, property, { value: generic(method) }); - } - } - } - genericMethods(Array, [ - "pop", - "push", - "reverse", - "shift", - "sort", - "splice", - "unshift", - "concat", - "join", - "slice", - "indexOf", - "lastIndexOf", - "filter", - "forEach", - "every", - "map", - "some", - "reduce", - "reduceRight", - "includes", - "find", - "findIndex" - ]); - genericMethods(String, [ - 'quote', - 'substring', - 'toLowerCase', - 'toUpperCase', - 'charAt', - 'charCodeAt', - 'indexOf', - 'lastIndexOf', - 'include', - 'startsWith', - 'endsWith', - 'repeat', - 'trim', - 'trimLeft', - 'trimRight', - 'toLocaleLowerCase', - 'toLocaleUpperCase', - 'match', - 'search', - 'replace', - 'split', - 'substr', - 'concat', - 'slice' - ]); - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * HarmonyMaps.js * - * * - * Harmony Maps for HTML5. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global) { - 'use strict'; - - var hasWeakMap = 'WeakMap' in global; - var hasMap = 'Map' in global; - var hasForEach = true; - - if (hasMap) { - hasForEach = 'forEach' in new global.Map(); - } - - if (hasWeakMap && hasMap && hasForEach) { return; } - - var namespaces = Object.create(null); - var count = 0; - var reDefineValueOf = function (obj) { - var privates = Object.create(null); - var baseValueOf = obj.valueOf; - Object.defineProperty(obj, 'valueOf', { - value: function (namespace, n) { - if ((this === obj) && - (n in namespaces) && - (namespaces[n] === namespace)) { - if (!(n in privates)) { - privates[n] = Object.create(null); - } - return privates[n]; - } - else { - return baseValueOf.apply(this, arguments); - } - }, - writable: true, - configurable: true, - enumerable: false - }); - }; - - if (!hasWeakMap) { - global.WeakMap = function WeakMap() { - var namespace = Object.create(null); - var n = count++; - namespaces[n] = namespace; - var map = function (key) { - if (key !== Object(key)) { - throw new Error('value is not a non-null object'); - } - var privates = key.valueOf(namespace, n); - if (privates !== key.valueOf()) { - return privates; - } - reDefineValueOf(key); - return key.valueOf(namespace, n); - }; - var m = Object.create(WeakMap.prototype, { - get: { - value: function (key) { - return map(key).value; - } - }, - set: { - value: function (key, value) { - map(key).value = value; - } - }, - has: { - value: function (key) { - return 'value' in map(key); - } - }, - 'delete': { - value: function (key) { - return delete map(key).value; - } - }, - clear: { - value: function () { - delete namespaces[n]; - n = count++; - namespaces[n] = namespace; - } - } - }); - if (arguments.length > 0 && Array.isArray(arguments[0])) { - var iterable = arguments[0]; - for (var i = 0, len = iterable.length; i < len; i++) { - m.set(iterable[i][0], iterable[i][1]); - } - } - return m; - }; - } - - if (!hasMap) { - var objectMap = function () { - var namespace = Object.create(null); - var n = count++; - var nullMap = Object.create(null); - namespaces[n] = namespace; - var map = function (key) { - if (key === null) { return nullMap; } - var privates = key.valueOf(namespace, n); - if (privates !== key.valueOf()) { return privates; } - reDefineValueOf(key); - return key.valueOf(namespace, n); - }; - return { - get: function (key) { return map(key).value; }, - set: function (key, value) { map(key).value = value; }, - has: function (key) { return 'value' in map(key); }, - 'delete': function (key) { return delete map(key).value; }, - clear: function () { - delete namespaces[n]; - n = count++; - namespaces[n] = namespace; - } - }; - }; - var noKeyMap = function () { - var map = Object.create(null); - return { - get: function () { return map.value; }, - set: function (_, value) { map.value = value; }, - has: function () { return 'value' in map; }, - 'delete': function () { return delete map.value; }, - clear: function () { map = Object.create(null); } - }; - }; - var scalarMap = function () { - var map = Object.create(null); - return { - get: function (key) { return map[key]; }, - set: function (key, value) { map[key] = value; }, - has: function (key) { return key in map; }, - 'delete': function (key) { return delete map[key]; }, - clear: function () { map = Object.create(null); } - }; - }; - global.Map = function Map() { - var map = { - 'number': scalarMap(), - 'string': scalarMap(), - 'boolean': scalarMap(), - 'object': objectMap(), - 'function': objectMap(), - 'unknown': objectMap(), - 'undefined': noKeyMap(), - 'null': noKeyMap() - }; - var size = 0; - var keys = []; - var m = Object.create(Map.prototype, { - size: { - get : function () { return size; } - }, - get: { - value: function (key) { - return map[typeof(key)].get(key); - } - }, - set: { - value: function (key, value) { - if (!this.has(key)) { - keys.push(key); - size++; - } - map[typeof(key)].set(key, value); - } - }, - has: { - value: function (key) { - return map[typeof(key)].has(key); - } - }, - 'delete': { - value: function (key) { - if (this.has(key)) { - size--; - keys.splice(keys.indexOf(key), 1); - return map[typeof(key)]['delete'](key); - } - return false; - } - }, - clear: { - value: function () { - keys.length = 0; - for (var key in map) { map[key].clear(); } - size = 0; - } - }, - forEach: { - value: function (callback, thisArg) { - for (var i = 0, n = keys.length; i < n; i++) { - callback.call(thisArg, this.get(keys[i]), keys[i], this); - } - } - } - }); - if (arguments.length > 0 && Array.isArray(arguments[0])) { - var iterable = arguments[0]; - for (var i = 0, len = iterable.length; i < len; i++) { - m.set(iterable[i][0], iterable[i][1]); - } - } - return m; - }; - } - - if (!hasForEach) { - var OldMap = global.Map; - global.Map = function Map() { - var map = new OldMap(); - var size = 0; - var keys = []; - var m = Object.create(Map.prototype, { - size: { - get : function () { return size; } - }, - get: { - value: function (key) { - return map.get(key); - } - }, - set: { - value: function (key, value) { - if (!map.has(key)) { - keys.push(key); - size++; - } - map.set(key, value); - } - }, - has: { - value: function (key) { - return map.has(key); - } - }, - 'delete': { - value: function (key) { - if (map.has(key)) { - size--; - keys.splice(keys.indexOf(key), 1); - return map['delete'](key); - } - return false; - } - }, - clear: { - value: function () { - if ('clear' in map) { - map.clear(); - } - else { - for (var i = 0, n = keys.length; i < n; i++) { - map['delete'](keys[i]); - } - } - keys.length = 0; - size = 0; - } - }, - forEach: { - value: function (callback, thisArg) { - for (var i = 0, n = keys.length; i < n; i++) { - callback.call(thisArg, this.get(keys[i]), keys[i], this); - } - } - } - }); - if (arguments.length > 0 && Array.isArray(arguments[0])) { - var iterable = arguments[0]; - for (var i = 0, len = iterable.length; i < len; i++) { - m.set(iterable[i][0], iterable[i][1]); - } - } - return m; - }; - } -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * TimeoutError.js * - * * - * TimeoutError for HTML5. * - * * - * LastModified: Jul 17, 2015 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -function TimeoutError(message) { - Error.call(this); - this.message = message; - this.name = TimeoutError.name; - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, TimeoutError); - } -} - -TimeoutError.prototype = Object.create(Error.prototype); -TimeoutError.prototype.constructor = TimeoutError; - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * setImmediate.js * - * * - * setImmediate for HTML5. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function(global, undefined) { - 'use strict'; - if (global.setImmediate) { return; } - - var doc = global.document; - var MutationObserver = global.MutationObserver || global.WebKitMutationObserver || global.MozMutationOvserver; - var polifill = {}; - var nextId = 1; - var tasks = {}; - - function wrap(handler) { - var args = Array.prototype.slice.call(arguments, 1); - return function() { - handler.apply(undefined, args); - }; - } - - function clear(handleId) { - delete tasks[handleId]; - } - - function run(handleId) { - var task = tasks[handleId]; - if (task) { - try { - task(); - } - finally { - clear(handleId); - } - } - } - - function create(args) { - tasks[nextId] = wrap.apply(undefined, args); - return nextId++; - } - - polifill.mutationObserver = function() { - var queue = [], - node = doc.createTextNode(''), - observer = new MutationObserver(function() { - while (queue.length > 0) { - run(queue.shift()); - } - }); - - observer.observe(node, {"characterData": true}); - - return function() { - var handleId = create(arguments); - queue.push(handleId); - node.data = handleId & 1; - return handleId; - }; - }; - - polifill.messageChannel = function() { - var channel = new global.MessageChannel(); - - channel.port1.onmessage = function(event) { - run(Number(event.data)); - }; - - return function() { - var handleId = create(arguments); - channel.port2.postMessage(handleId); - return handleId; - }; - }; - - polifill.nextTick = function() { - return function() { - var handleId = create(arguments); - global.process.nextTick( wrap( run, handleId ) ); - return handleId; - }; - }; - - polifill.postMessage = function() { - var iframe = doc.createElement('iframe'); - iframe.style.display = 'none'; - doc.documentElement.appendChild(iframe); - var iwin = iframe.contentWindow; - iwin.document.write(''); - iwin.document.close(); - var queue = []; - window.addEventListener('message', function() { - while (queue.length > 0) { - run(queue.shift()); - } - }); - return function() { - var handleId = create(arguments); - queue.push(handleId); - iwin.postMessage(1, "*"); - return handleId; - }; - }; - - polifill.readyStateChange = function() { - var html = doc.documentElement; - - return function() { - var handleId = create(arguments); - var script = doc.createElement('script'); - - script.onreadystatechange = function() { - run(handleId); - script.onreadystatechange = null; - html.removeChild(script); - script = null; - }; - - html.appendChild(script); - - return handleId; - }; - }; - - polifill.setTimeout = function() { - return function() { - var handleId = create(arguments); - global.setTimeout( wrap( run, handleId ), 0 ); - return handleId; - }; - }; - - // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. - var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); - attachTo = (attachTo && attachTo.setTimeout ? attachTo : global); - - // Don't get fooled by e.g. browserify environments. - // For Node.js before 0.9 - if (typeof(global.process) !== 'undefined' && - Object.prototype.toString.call(global.process) === '[object process]' && - !global.process.browser) { - attachTo.setImmediate = polifill.nextTick(); - } - // For IE 6–9 - else if (doc && ('onreadystatechange' in doc.createElement('script'))) { - attachTo.setImmediate = polifill.readyStateChange(); - } - // For MutationObserver, where supported - else if (doc && MutationObserver) { - attachTo.setImmediate = polifill.mutationObserver(); - } - // For web workers, where supported - else if (global.MessageChannel) { - attachTo.setImmediate = polifill.messageChannel(); - } - // For non-IE modern browsers - else if (doc && 'postMessage' in global && 'addEventListener' in global) { - attachTo.setImmediate = polifill.postMessage(); - } - // For older browsers - else { - attachTo.setImmediate = polifill.setTimeout(); - } - - attachTo.clearImmediate = clear; -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * Future.js * - * * - * hprose Future for HTML5. * - * * - * LastModified: Jun 7, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var PENDING = 0; - var FULFILLED = 1; - var REJECTED = 2; - - var hasPromise = 'Promise' in global; - var setImmediate = global.setImmediate; - var setTimeout = global.setTimeout; - var clearTimeout = global.clearTimeout; - var TimeoutError = global.TimeoutError; - - function Future(computation) { - Object.defineProperties(this, { - _subscribers: { value: [] }, - resolve: { value: this.resolve.bind(this) }, - reject: { value: this.reject.bind(this) } - }); - var self = this; - if (typeof computation === 'function') { - setImmediate(function() { - try { - self.resolve(computation()); - } - catch(e) { - self.reject(e); - } - }); - } - } - - function isFuture(obj) { - return obj instanceof Future; - } - - function isPromise(obj) { - return isFuture(obj) || (hasPromise && (obj instanceof global.Promise) && (typeof (obj.then === 'function'))); - } - - function toPromise(obj) { - return (isPromise(obj) ? obj : value(obj)); - } - - function delayed(duration, value) { - var computation = (typeof value === 'function') ? - value : - function() { return value; }; - var future = new Future(); - setTimeout(function() { - try { - future.resolve(computation()); - } - catch(e) { - future.reject(e); - } - }, duration); - return future; - } - - function error(e) { - var future = new Future(); - future.reject(e); - return future; - } - - function value(v) { - var future = new Future(); - future.resolve(v); - return future; - } - - function sync(computation) { - try { - var result = computation(); - return value(result); - } - catch(e) { - return error(e); - } - } - - function promise(executor) { - var future = new Future(); - executor(future.resolve, future.reject); - return future; - } - - function arraysize(array) { - var size = 0; - Array.forEach(array, function() { ++size; }); - return size; - } - - function all(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { - var n = array.length; - var count = arraysize(array); - var result = new Array(n); - if (count === 0) { return value(result); } - var future = new Future(); - Array.forEach(array, function(element, index) { - toPromise(element).then(function(value) { - result[index] = value; - if (--count === 0) { - future.resolve(result); - } - }, - future.reject); - }); - return future; - }); - } - - function join() { - return all(arguments); - } - - function race(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { - var future = new Future(); - Array.forEach(array, function(element) { - toPromise(element).fill(future); - }); - return future; - }); - } - - function any(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { - var n = array.length; - var count = arraysize(array); - if (count === 0) { - throw new RangeError('any(): array must not be empty'); - } - var reasons = new Array(n); - var future = new Future(); - Array.forEach(array, function(element, index) { - toPromise(element).then(future.resolve, function(e) { - reasons[index] = e; - if (--count === 0) { - future.reject(reasons); - } - }); - }); - return future; - }); - } - - function settle(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { - var n = array.length; - var count = arraysize(array); - var result = new Array(n); - if (count === 0) { return value(result); } - var future = new Future(); - Array.forEach(array, function(element, index) { - var f = toPromise(element); - f.whenComplete(function() { - result[index] = f.inspect(); - if (--count === 0) { - future.resolve(result); - } - }); - }); - return future; - }); - } - - function attempt(handler/*, arg1, arg2, ... */) { - var args = Array.slice(arguments, 1); - return all(args).then(function(args) { - return handler.apply(undefined, args); - }); - } - - function run(handler, thisArg/*, arg1, arg2, ... */) { - var args = Array.slice(arguments, 2); - return all(args).then(function(args) { - return handler.apply(thisArg, args); - }); - } - - function wrap(handler, thisArg) { - return function() { - return all(arguments).then(function(args) { - return handler.apply(thisArg, args); - }); - }; - } - - function forEach(array, callback, thisArg) { - return all(array).then(function(array) { - return array.forEach(callback, thisArg); - }); - } - - function every(array, callback, thisArg) { - return all(array).then(function(array) { - return array.every(callback, thisArg); - }); - } - - function some(array, callback, thisArg) { - return all(array).then(function(array) { - return array.some(callback, thisArg); - }); - } - - function filter(array, callback, thisArg) { - return all(array).then(function(array) { - return array.filter(callback, thisArg); - }); - } - - function map(array, callback, thisArg) { - return all(array).then(function(array) { - return array.map(callback, thisArg); - }); - } - - function reduce(array, callback, initialValue) { - if (arguments.length > 2) { - return all(array).then(function(array) { - if (!isPromise(initialValue)) { - initialValue = value(initialValue); - } - return initialValue.then(function(value) { - return array.reduce(callback, value); - }); - }); - } - return all(array).then(function(array) { - return array.reduce(callback); - }); - } - - function reduceRight(array, callback, initialValue) { - if (arguments.length > 2) { - return all(array).then(function(array) { - if (!isPromise(initialValue)) { - initialValue = value(initialValue); - } - return initialValue.then(function(value) { - return array.reduceRight(callback, value); - }); - }); - } - return all(array).then(function(array) { - return array.reduceRight(callback); - }); - } - - function indexOf(array, searchElement, fromIndex) { - return all(array).then(function(array) { - if (!isPromise(searchElement)) { - searchElement = value(searchElement); - } - return searchElement.then(function(searchElement) { - return array.indexOf(searchElement, fromIndex); - }); - }); - } - - function lastIndexOf(array, searchElement, fromIndex) { - return all(array).then(function(array) { - if (!isPromise(searchElement)) { - searchElement = value(searchElement); - } - return searchElement.then(function(searchElement) { - if (fromIndex === undefined) { - fromIndex = array.length - 1; - } - return array.lastIndexOf(searchElement, fromIndex); - }); - }); - } - - function includes(array, searchElement, fromIndex) { - return all(array).then(function(array) { - if (!isPromise(searchElement)) { - searchElement = value(searchElement); - } - return searchElement.then(function(searchElement) { - return array.includes(searchElement, fromIndex); - }); - }); - } - - function find(array, predicate, thisArg) { - return all(array).then(function(array) { - return array.find(predicate, thisArg); - }); - } - - function findIndex(array, predicate, thisArg) { - return all(array).then(function(array) { - return array.findIndex(predicate, thisArg); - }); - } - - Object.defineProperties(Future, { - // port from Dart - delayed: { value: delayed }, - error: { value: error }, - sync: { value: sync }, - value: { value: value }, - // Promise compatible - all: { value: all }, - race: { value: race }, - resolve: { value: value }, - reject: { value: error }, - // extended methods - promise: { value: promise }, - isFuture: { value: isFuture }, - isPromise: { value: isPromise }, - toPromise: { value: toPromise }, - join: { value: join }, - any: { value: any }, - settle: { value: settle }, - attempt: { value: attempt }, - run: { value: run }, - wrap: { value: wrap }, - // for array - forEach: { value: forEach }, - every: { value: every }, - some: { value: some }, - filter: { value: filter }, - map: { value: map }, - reduce: { value: reduce }, - reduceRight: { value: reduceRight }, - indexOf: { value: indexOf }, - lastIndexOf: { value: lastIndexOf }, - includes: { value: includes }, - find: { value: find }, - findIndex: { value: findIndex } - }); - - function _call(callback, next, x) { - setImmediate(function() { - try { - var r = callback(x); - next.resolve(r); - } - catch(e) { - next.reject(e); - } - }); - } - - function _reject(onreject, next, e) { - if (onreject) { - _call(onreject, next, e); - } - else { - next.reject(e); - } - } - - function _resolve(onfulfill, onreject, self, next, x) { - function resolvePromise(y) { - _resolve(onfulfill, onreject, self, next, y); - } - function rejectPromise(r) { - _reject(onreject, next, r); - } - if (isPromise(x)) { - if (x === self) { - rejectPromise(new TypeError('Self resolution')); - return; - } - x.then(resolvePromise, rejectPromise); - return; - } - if ((x !== null) && - (typeof x === 'object') || - (typeof x === 'function')) { - var then; - try { - then = x.then; - } - catch (e) { - rejectPromise(e); - return; - } - if (typeof then === 'function') { - var notrun = true; - try { - then.call(x, function(y) { - if (notrun) { - notrun = false; - resolvePromise(y); - } - }, function(r) { - if (notrun) { - notrun = false; - rejectPromise(r); - } - }); - return; - } - catch (e) { - if (notrun) { - notrun = false; - rejectPromise(e); - } - } - return; - } - } - if (onfulfill) { - _call(onfulfill, next, x); - } - else { - next.resolve(x); - } - } - - Object.defineProperties(Future.prototype, { - _value: { writable: true }, - _reason: { writable: true }, - _state: { value: PENDING, writable: true }, - resolve: { value: function(value) { - if (this._state === PENDING) { - this._state = FULFILLED; - this._value = value; - var subscribers = this._subscribers; - while (subscribers.length > 0) { - var subscriber = subscribers.shift(); - _resolve(subscriber.onfulfill, - subscriber.onreject, - this, - subscriber.next, - value); - } - } - } }, - reject: { value: function(reason) { - if (this._state === PENDING) { - this._state = REJECTED; - this._reason = reason; - var subscribers = this._subscribers; - while (subscribers.length > 0) { - var subscriber = subscribers.shift(); - if (subscriber.onreject) { - _call(subscriber.onreject, - subscriber.next, - reason); - } - else { - subscriber.next.reject(reason); - } - } - } - } }, - then: { value: function(onfulfill, onreject) { - if (typeof onfulfill !== 'function') { onfulfill = null; } - if (typeof onreject !== 'function') { onreject = null; } - if (onfulfill || onreject) { - var next = new Future(); - if (this._state === FULFILLED) { - _resolve(onfulfill, onreject, this, next, this._value); - } - else if (this._state === REJECTED) { - if (onreject) { - _call(onreject, next, this._reason); - } - else { - next.reject(this._reason); - } - } - else { - this._subscribers.push({ - onfulfill: onfulfill, - onreject: onreject, - next: next - }); - } - return next; - } - return this; - } }, - done: { value: function(onfulfill, onreject) { - this.then(onfulfill, onreject).then(null, function(error) { - setImmediate(function() { throw error; }); - }); - } }, - inspect: { value: function() { - switch (this._state) { - case PENDING: return { state: 'pending' }; - case FULFILLED: return { state: 'fulfilled', value: this._value }; - case REJECTED: return { state: 'rejected', reason: this._reason }; - } - } }, - catchError: { value: function(onreject, test) { - if (typeof test === 'function') { - var self = this; - return this['catch'](function(e) { - if (test(e)) { - return self['catch'](onreject); - } - else { - throw e; - } - }); - } - return this['catch'](onreject); - } }, - 'catch': { value: function(onreject) { - return this.then(null, onreject); - } }, - fail: { value: function(onreject) { - this.done(null, onreject); - } }, - whenComplete: { value: function(action) { - return this.then( - function(v) { - var f = action(); - if (f === undefined) { return v; } - f = isPromise(f) ? f : value(f); - return f.then(function() { return v; }); - }, - function(e) { - var f = action(); - if (f === undefined) { throw e; } - f = isPromise(f) ? f : value(f); - return f.then(function() { throw e; }); - } - ); - } }, - complete: { value: function(oncomplete) { - return this.then(oncomplete, oncomplete); - } }, - always: { value: function(oncomplete) { - this.done(oncomplete, oncomplete); - } }, - fill: { value: function(future) { - this.then(future.resolve, future.reject); - } }, - timeout: { value: function(duration, reason) { - var future = new Future(); - var timeoutId = setTimeout(function() { - future.reject(reason || new TimeoutError('timeout')); - }, duration); - this.whenComplete(function() { clearTimeout(timeoutId); }) - .fill(future); - return future; - } }, - delay: { value: function(duration) { - var future = new Future(); - this.then(function(result) { - setTimeout(function() { - future.resolve(result); - }, duration); - }, - future.reject); - return future; - } }, - tap: { value: function(onfulfilledSideEffect, thisArg) { - return this.then(function(result) { - onfulfilledSideEffect.call(thisArg, result); - return result; - }); - } }, - spread: { value: function(onfulfilledArray, thisArg) { - return this.then(function(array) { - return onfulfilledArray.apply(thisArg, array); - }); - } }, - get: { value: function(key) { - return this.then(function(result) { - return result[key]; - }); - } }, - set: { value: function(key, value) { - return this.then(function(result) { - result[key] = value; - return result; - }); - } }, - apply: { value: function(method, args) { - args = args || []; - return this.then(function(result) { - return all(args).then(function(args) { - return result[method].apply(result, args); - }); - }); - } }, - call: { value: function(method) { - var args = Array.slice(arguments, 1); - return this.then(function(result) { - return all(args).then(function(args) { - return result[method].apply(result, args); - }); - }); - } }, - bind: { value: function(method) { - var bindargs = Array.slice(arguments); - if (Array.isArray(method)) { - for (var i = 0, n = method.length; i < n; ++i) { - bindargs[0] = method[i]; - this.bind.apply(this, bindargs); - } - return; - } - bindargs.shift(); - var self = this; - Object.defineProperty(this, method, { value: function() { - var args = Array.slice(arguments); - return self.then(function(result) { - return all(bindargs.concat(args)).then(function(args) { - return result[method].apply(result, args); - }); - }); - } }); - return this; - } }, - forEach: { value: function(callback, thisArg) { - return forEach(this, callback, thisArg); - } }, - every: { value: function(callback, thisArg) { - return every(this, callback, thisArg); - } }, - some: { value: function(callback, thisArg) { - return some(this, callback, thisArg); - } }, - filter: { value: function(callback, thisArg) { - return filter(this, callback, thisArg); - } }, - map: { value: function(callback, thisArg) { - return map(this, callback, thisArg); - } }, - reduce: { value: function(callback, initialValue) { - if (arguments.length > 1) { - return reduce(this, callback, initialValue); - } - return reduce(this, callback); - } }, - reduceRight: { value: function(callback, initialValue) { - if (arguments.length > 1) { - return reduceRight(this, callback, initialValue); - } - return reduceRight(this, callback); - } }, - indexOf: { value: function(searchElement, fromIndex) { - return indexOf(this, searchElement, fromIndex); - } }, - lastIndexOf: { value: function(searchElement, fromIndex) { - return lastIndexOf(this, searchElement, fromIndex); - } }, - includes: { value: function(searchElement, fromIndex) { - return includes(this, searchElement, fromIndex); - } }, - find: { value: function(predicate, thisArg) { - return find(this, predicate, thisArg); - } }, - findIndex: { value: function(predicate, thisArg) { - return findIndex(this, predicate, thisArg); - } } - }); - - global.hprose.Future = Future; - - function Completer() { - var future = new Future(); - Object.defineProperties(this, { - future: { value: future }, - complete: { value: future.resolve }, - completeError: { value: future.reject }, - isCompleted: { get: function() { - return ( future._state !== PENDING ); - } } - }); - } - - global.hprose.Completer = Completer; - - global.hprose.resolved = value; - - global.hprose.rejected = error; - - global.hprose.deferred = function() { - var self = new Future(); - return Object.create(null, { - promise: { value: self }, - resolve: { value: self.resolve }, - reject: { value: self.reject } - }); - }; - - if (hasPromise) { return; } - - global.Promise = function(executor) { - Future.call(this); - executor(this.resolve, this.reject); - }; - - global.Promise.prototype = Object.create(Future.prototype); - global.Promise.prototype.constructor = Future; - - Object.defineProperties(global.Promise, { - all: { value: all }, - race: { value: race }, - resolve: { value: value }, - reject: { value: error } - }); - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * BytesIO.js * - * * - * hprose BytesIO for HTML5. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var toBinaryString = global.hprose.toBinaryString; - - var _EMPTY_BYTES = new Uint8Array(0); - var _INIT_SIZE = 1024; - - function writeInt32BE(bytes, p, i) { - bytes[p++] = i >>> 24 & 0xFF; - bytes[p++] = i >>> 16 & 0xFF; - bytes[p++] = i >>> 8 & 0xFF; - bytes[p++] = i & 0xFF; - return p; - } - - function writeInt32LE(bytes, p, i) { - bytes[p++] = i & 0xFF; - bytes[p++] = i >>> 8 & 0xFF; - bytes[p++] = i >>> 16 & 0xFF; - bytes[p++] = i >>> 24 & 0xFF; - return p; - } - - function writeString(bytes, p, str) { - var n = str.length; - for (var i = 0; i < n; ++i) { - var codeUnit = str.charCodeAt(i); - if (codeUnit < 0x80) { - bytes[p++] = codeUnit; - } - else if (codeUnit < 0x800) { - bytes[p++] = 0xC0 | (codeUnit >> 6); - bytes[p++] = 0x80 | (codeUnit & 0x3F); - } - else if (codeUnit < 0xD800 || codeUnit > 0xDFFF) { - bytes[p++] = 0xE0 | (codeUnit >> 12); - bytes[p++] = 0x80 | ((codeUnit >> 6) & 0x3F); - bytes[p++] = 0x80 | (codeUnit & 0x3F); - } - else { - if (i + 1 < n) { - var nextCodeUnit = str.charCodeAt(i + 1); - if (codeUnit < 0xDC00 && 0xDC00 <= nextCodeUnit && nextCodeUnit <= 0xDFFF) { - var rune = (((codeUnit & 0x03FF) << 10) | (nextCodeUnit & 0x03FF)) + 0x010000; - bytes[p++] = 0xF0 | (rune >> 18); - bytes[p++] = 0x80 | ((rune >> 12) & 0x3F); - bytes[p++] = 0x80 | ((rune >> 6) & 0x3F); - bytes[p++] = 0x80 | (rune & 0x3F); - ++i; - continue; - } - } - throw new Error('Malformed string'); - } - } - return p; - } - - function readShortString(bytes, n) { - var charCodes = new Array(n); - var i = 0, off = 0; - for (var len = bytes.length; i < n && off < len; i++) { - var unit = bytes[off++]; - switch (unit >> 4) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - charCodes[i] = unit; - break; - case 12: - case 13: - if (off < len) { - charCodes[i] = ((unit & 0x1F) << 6) | - (bytes[off++] & 0x3F); - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; - case 14: - if (off + 1 < len) { - charCodes[i] = ((unit & 0x0F) << 12) | - ((bytes[off++] & 0x3F) << 6) | - (bytes[off++] & 0x3F); - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; - case 15: - if (off + 2 < len) { - var rune = (((unit & 0x07) << 18) | - ((bytes[off++] & 0x3F) << 12) | - ((bytes[off++] & 0x3F) << 6) | - (bytes[off++] & 0x3F)) - 0x10000; - if (0 <= rune && rune <= 0xFFFFF) { - charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); - charCodes[i] = ((rune & 0x03FF) | 0xDC00); - } - else { - throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); - } - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; - default: - throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); - } - } - if (i < n) { - charCodes.length = i; - } - return [String.fromCharCode.apply(String, charCodes), off]; - } - - function readLongString(bytes, n) { - var buf = []; - var charCodes = new Array(0xFFFF); - var i = 0, off = 0; - for (var len = bytes.length; i < n && off < len; i++) { - var unit = bytes[off++]; - switch (unit >> 4) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - charCodes[i] = unit; - break; - case 12: - case 13: - if (off < len) { - charCodes[i] = ((unit & 0x1F) << 6) | - (bytes[off++] & 0x3F); - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; - case 14: - if (off + 1 < len) { - charCodes[i] = ((unit & 0x0F) << 12) | - ((bytes[off++] & 0x3F) << 6) | - (bytes[off++] & 0x3F); - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; - case 15: - if (off + 2 < len) { - var rune = (((unit & 0x07) << 18) | - ((bytes[off++] & 0x3F) << 12) | - ((bytes[off++] & 0x3F) << 6) | - (bytes[off++] & 0x3F)) - 0x10000; - if (0 <= rune && rune <= 0xFFFFF) { - charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); - charCodes[i] = ((rune & 0x03FF) | 0xDC00); - } - else { - throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); - } - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; - default: - throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); - } - if (i >= 65534) { - var size = i + 1; - charCodes.length = size; - buf.push(String.fromCharCode.apply(String, charCodes)); - n -= size; - i = -1; - } - } - if (i > 0) { - charCodes.length = i; - buf.push(String.fromCharCode.apply(String, charCodes)); - } - return [buf.join(''), off]; - } - - function readString(bytes, n) { - if (n === undefined || n === null || (n < 0)) { n = bytes.length; } - if (n === 0) { return ['', 0]; } - return ((n < 100000) ? - readShortString(bytes, n) : - readLongString(bytes, n)); - } - - function readStringAsBytes(bytes, n) { - if (n === undefined) { n = bytes.length; } - if (n === 0) { return [_EMPTY_BYTES, 0]; } - var i = 0, off = 0; - for (var len = bytes.length; i < n && off < len; i++) { - var unit = bytes[off++]; - switch (unit >> 4) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - break; - case 12: - case 13: - if (off < len) { - off++; - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; - case 14: - if (off + 1 < len) { - off += 2; - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; - case 15: - if (off + 2 < len) { - var rune = (((unit & 0x07) << 18) | - ((bytes[off++] & 0x3F) << 12) | - ((bytes[off++] & 0x3F) << 6) | - (bytes[off++] & 0x3F)) - 0x10000; - if (0 <= rune && rune <= 0xFFFFF) { - i++; - } - else { - throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); - } - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; - default: - throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); - } - } - return [bytes.subarray(0, off), off]; - } - - function pow2roundup(x) { - --x; - x |= x >> 1; - x |= x >> 2; - x |= x >> 4; - x |= x >> 8; - x |= x >> 16; - return x + 1; - } - - function BytesIO() { - var a = arguments; - switch (a.length) { - case 1: - switch (a[0].constructor) { - case Uint8Array: - this._bytes = a[0]; - this._length = a[0].length; - break; - case BytesIO: - this._bytes = a[0].toBytes(); - this._length = a[0].length; - break; - case String: - this.writeString(a[0]); - break; - case Number: - this._bytes = new Uint8Array(a[0]); - break; - default: - this._bytes = new Uint8Array(a[0]); - this._length = this._bytes.length; - break; - } - break; - case 2: - this._bytes = new Uint8Array(a[0], a[1]); - this._length = a[1]; - break; - case 3: - this._bytes = new Uint8Array(a[0], a[1], a[2]); - this._length = a[2]; - break; - } - this.mark(); - } - - Object.defineProperties(BytesIO.prototype, { - _bytes: { value: null, writable: true }, - _length: { value: 0, writable: true }, - _wmark: { value: 0, writable: true }, - _off: { value: 0, writable: true }, - _rmark: { value: 0, writable: true }, - _grow: { value: function(n) { - var bytes = this._bytes; - var required = this._length + n; - var size = pow2roundup(required); - if (bytes) { - size *= 2; - if (size > bytes.length) { - var buf = new Uint8Array(size); - buf.set(bytes); - this._bytes = buf; - } - } - else { - size = Math.max(size, _INIT_SIZE); - this._bytes = new Uint8Array(size); - } - } }, - length: { get: function() { return this._length; } }, - capacity: { get: function() { - return this._bytes ? this._bytes.length : 0; - } }, - position: { get: function() { return this._off; } }, - // returns a view of the the internal buffer. - bytes: { get : function() { - return (this._bytes === null) ? - _EMPTY_BYTES : - this._bytes.subarray(0, this._length); - } }, - buffer: { get : function() { - if (this._bytes === null) { - return _EMPTY_BYTES.buffer; - } - if (this._bytes.buffer.slice) { - return this._bytes.buffer.slice(0, this._length); - } - var buf = new Uint8Array(this._length); - buf.set(this._bytes.subarray(0, this._length)); - return buf.buffer; - } }, - mark: { value: function() { - this._wmark = this._length; - this._rmark = this._off; - } }, - reset: { value: function() { - this._length = this._wmark; - this._off = this._rmark; - } }, - clear: { value: function() { - this._bytes = null; - this._length = 0; - this._wmark = 0; - this._off = 0; - this._rmark = 0; - } }, - writeByte: { value: function(b) { - this._grow(1); - this._bytes[this._length++] = b; - } }, - writeInt32BE: { value: function(i) { - if ((i === (i | 0)) && (i <= 2147483647)) { - this._grow(4); - this._length = writeInt32BE(this._bytes, this._length, i); - return; - } - throw new TypeError('value is out of bounds'); - } }, - writeUInt32BE: { value: function(i) { - if (((i & 0x7FFFFFFF) + 0x80000000 === i) && (i >= 0)) { - this._grow(4); - this._length = writeInt32BE(this._bytes, this._length, i | 0); - return; - } - throw new TypeError('value is out of bounds'); - } }, - writeInt32LE: { value: function(i) { - if ((i === (i | 0)) && (i <= 2147483647)) { - this._grow(4); - this._length = writeInt32LE(this._bytes, this._length, i); - return; - } - throw new TypeError('value is out of bounds'); - } }, - writeUInt32LE: { value: function(i) { - if (((i & 0x7FFFFFFF) + 0x80000000 === i) && (i >= 0)) { - this._grow(4); - this._length = writeInt32LE(this._bytes, this._length, i | 0); - return; - } - throw new TypeError('value is out of bounds'); - } }, - write: { value: function(data) { - var n = data.byteLength || data.length; - if (n === 0) { return; } - this._grow(n); - var bytes = this._bytes; - var length = this._length; - switch (data.constructor) { - case ArrayBuffer: - bytes.set(new Uint8Array(data), length); - break; - case Uint8Array: - bytes.set(data, length); - break; - case BytesIO: - bytes.set(data.bytes, length); - break; - default: - for (var i = 0; i < n; i++) { - bytes[length + i] = data[i]; - } - break; - } - this._length += n; - } }, - writeAsciiString: { value: function(str) { - var n = str.length; - if (n === 0) { return; } - this._grow(n); - var bytes = this._bytes; - var l = this._length; - for (var i = 0; i < n; ++i, ++l) { - bytes[l] = str.charCodeAt(i); - } - this._length = l; - } }, - writeString: { value: function(str) { - var n = str.length; - if (n === 0) { return; } - // A single code unit uses at most 3 bytes. - // Two code units at most 4. - this._grow(n * 3); - this._length = writeString(this._bytes, this._length, str); - } }, - readByte: { value: function() { - if (this._off < this._length) { - return this._bytes[this._off++]; - } - return -1; - } }, - readInt32BE: { value: function() { - var bytes = this._bytes; - var off = this._off; - if (off + 3 < this._length) { - var result = bytes[off++] << 24 | - bytes[off++] << 16 | - bytes[off++] << 8 | - bytes[off++]; - this._off = off; - return result; - } - throw new Error('EOF'); - } }, - readUInt32BE: { value: function() { - var value = this.readInt32BE(); - if (value < 0) { - return (value & 0x7FFFFFFF) + 0x80000000; - } - return value; - } }, - readInt32LE: { value: function() { - var bytes = this._bytes; - var off = this._off; - if (off + 3 < this._length) { - var result = bytes[off++] | - bytes[off++] << 8 | - bytes[off++] << 16 | - bytes[off++] << 24; - this._off = off; - return result; - } - throw new Error('EOF'); - } }, - readUInt32LE: { value: function() { - var value = this.readInt32LE(); - if (value < 0) { - return (value & 0x7FFFFFFF) + 0x80000000; - } - return value; - } }, - read: { value: function(n) { - if (this._off + n > this._length) { - n = this._length - this._off; - } - if (n === 0) { return _EMPTY_BYTES; } - return this._bytes.subarray(this._off, this._off += n); - } }, - skip: { value: function(n) { - if (this._off + n > this._length) { - n = this._length - this._off; - this._off = this._length; - } - else { - this._off += n; - } - return n; - } }, - // the result is an Uint8Array, and includes tag. - readBytes: { value: function(tag) { - var pos = Array.indexOf(this._bytes, tag, this._off); - var buf; - if (pos === -1) { - buf = this._bytes.subarray(this._off, this._length); - this._off = this._length; - } - else { - buf = this._bytes.subarray(this._off, pos + 1); - this._off = pos + 1; - } - return buf; - } }, - // the result is a String, and doesn't include tag. - // but the position is the same as readBytes - readUntil: { value: function(tag) { - var pos = Array.indexOf(this._bytes, tag, this._off); - var str = ''; - if (pos === this._off) { - this._off++; - } - else if (pos === -1) { - str = readString(this._bytes.subarray(this._off, this._length))[0]; - this._off = this._length; - } - else { - str = readString(this._bytes.subarray(this._off, pos))[0]; - this._off = pos + 1; - } - return str; - } }, - readAsciiString: { value: function(n) { - if (this._off + n > this._length) { - n = this._length - this._off; - } - if (n === 0) { return ''; } - return toBinaryString(this._bytes.subarray(this._off, this._off += n)); - } }, - // n is the UTF16 length - readStringAsBytes: { value: function(n) { - var r = readStringAsBytes(this._bytes.subarray(this._off, this._length), n); - this._off += r[1]; - return r[0]; - } }, - // n is the UTF16 length - readString: { value: function(n) { - var r = readString(this._bytes.subarray(this._off, this._length), n); - this._off += r[1]; - return r[0]; - } }, - // returns a view of the the internal buffer and clears `this`. - takeBytes: { value: function() { - var buffer = this.bytes; - this.clear(); - return buffer; - } }, - // returns a copy of the current contents and leaves `this` intact. - toBytes: { value: function() { - return new Uint8Array(this.bytes); - } }, - toString: { value: function() { - return readString(this.bytes, this._length)[0]; - } }, - clone: { value: function() { - return new BytesIO(this.toBytes()); - } }, - trunc: { value: function() { - this._bytes = this._bytes.subarray(this._off, this._length); - this._length = this._bytes.length; - this._off = 0; - this._wmark = 0; - this._rmark = 0; - } } - }); - - function toString(data) { - /* jshint -W086 */ - if (data.length === 0) { return ''; } - switch(data.constructor) { - case String: return data; - case BytesIO: data = data.bytes; - case ArrayBuffer: data = new Uint8Array(data); - case Uint8Array: return readString(data, data.length)[0]; - default: return String.fromCharCode.apply(String, data); - } - } - - Object.defineProperty(BytesIO, 'toString', { value: toString }); - - global.hprose.BytesIO = BytesIO; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ -/**********************************************************\ - * * - * Tags.js * - * * - * hprose tags enum for HTML5. * - * * - * LastModified: Feb 23, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global) { - 'use strict'; - - global.hprose.Tags = { - /* Serialize Tags */ - TagInteger : 0x69, // 'i' - TagLong : 0x6C, // 'l' - TagDouble : 0x64, // 'd' - TagNull : 0x6E, // 'n' - TagEmpty : 0x65, // 'e' - TagTrue : 0x74, // 't' - TagFalse : 0x66, // 'f' - TagNaN : 0x4E, // 'N' - TagInfinity : 0x49, // 'I' - TagDate : 0x44, // 'D' - TagTime : 0x54, // 'T' - TagUTC : 0x5A, // 'Z' - TagBytes : 0x62, // 'b' - TagUTF8Char : 0x75, // 'u' - TagString : 0x73, // 's' - TagGuid : 0x67, // 'g' - TagList : 0x61, // 'a' - TagMap : 0x6d, // 'm' - TagClass : 0x63, // 'c' - TagObject : 0x6F, // 'o' - TagRef : 0x72, // 'r' - /* Serialize Marks */ - TagPos : 0x2B, // '+' - TagNeg : 0x2D, // '-' - TagSemicolon : 0x3B, // ',' - TagOpenbrace : 0x7B, // '{' - TagClosebrace : 0x7D, // '}' - TagQuote : 0x22, // '"' - TagPoint : 0x2E, // '.' - /* Protocol Tags */ - TagFunctions : 0x46, // 'F' - TagCall : 0x43, // 'C' - TagResult : 0x52, // 'R' - TagArgument : 0x41, // 'A' - TagError : 0x45, // 'E' - TagEnd : 0x7A // 'z' - }; -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * ClassManager.js * - * * - * hprose ClassManager for HTML5. * - * * - * LastModified: Feb 23, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global) { - 'use strict'; - - var WeakMap = global.WeakMap; - - var classCache = Object.create(null); - var aliasCache = new WeakMap(); - - function register(cls, alias) { - aliasCache.set(cls, alias); - classCache[alias] = cls; - } - - function getClassAlias(cls) { - return aliasCache.get(cls); - } - - function getClass(alias) { - return classCache[alias]; - } - - global.hprose.ClassManager = Object.create(null, { - register: { value: register }, - getClassAlias: { value: getClassAlias }, - getClass: { value: getClass } - }); - - global.hprose.register = register; - - register(Object, 'Object'); - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * Writer.js * - * * - * hprose Writer for HTML5. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var Map = global.Map; - var BytesIO = global.hprose.BytesIO; - var Tags = global.hprose.Tags; - var ClassManager = global.hprose.ClassManager; - - function getClassName(obj) { - var cls = obj.constructor; - var classname = ClassManager.getClassAlias(cls); - if (classname) { return classname; } - if (cls.name) { - classname = cls.name; - } - else { - var ctor = cls.toString(); - classname = ctor.substr(0, ctor.indexOf('(')).replace(/(^\s*function\s*)|(\s*$)/ig, ''); - if (classname === '' || classname === 'Object') { - return (typeof(obj.getClassName) === 'function') ? obj.getClassName() : 'Object'; - } - } - if (classname !== 'Object') { - ClassManager.register(cls, classname); - } - return classname; - } - - var fakeWriterRefer = Object.create(null, { - set: { value: function () {} }, - write: { value: function () { return false; } }, - reset: { value: function () {} } - }); - - function RealWriterRefer(stream) { - Object.defineProperties(this, { - _stream: { value: stream }, - _ref: { value: new Map(), writable: true } - }); - } - - Object.defineProperties(RealWriterRefer.prototype, { - _refcount: { value: 0, writable: true }, - set: { value: function (val) { - this._ref.set(val, this._refcount++); - } }, - write: { value: function (val) { - var index = this._ref.get(val); - if (index !== undefined) { - this._stream.writeByte(Tags.TagRef); - this._stream.writeString('' + index); - this._stream.writeByte(Tags.TagSemicolon); - return true; - } - return false; - } }, - reset: { value: function () { - this._ref = new Map(); - this._refcount = 0; - } } - }); - - function realWriterRefer(stream) { - return new RealWriterRefer(stream); - } - - function Writer(stream, simple) { - Object.defineProperties(this, { - stream: { value: stream }, - _classref: { value: Object.create(null), writable: true }, - _fieldsref: { value: [], writable: true }, - _refer: { value: simple ? fakeWriterRefer : realWriterRefer(stream) } - }); - } - - function serialize(writer, value) { - var stream = writer.stream; - if (value === undefined || value === null) { - stream.writeByte(Tags.TagNull); - return; - } - switch (value.constructor) { - case Function: - stream.writeByte(Tags.TagNull); - return; - case Number: - writeNumber(writer, value); - return; - case Boolean: - writeBoolean(writer, value); - return; - case String: - switch (value.length) { - case 0: - stream.writeByte(Tags.TagEmpty); - return; - case 1: - stream.writeByte(Tags.TagUTF8Char); - stream.writeString(value); - return; - } - writer.writeStringWithRef(value); - return; - case Date: - writer.writeDateWithRef(value); - return; - case Map: - writer.writeMapWithRef(value); - return; - case ArrayBuffer: - case Uint8Array: - case BytesIO: - writer.writeBytesWithRef(value); - return; - case Int8Array: - case Int16Array: - case Int32Array: - case Uint16Array: - case Uint32Array: - writeIntListWithRef(writer, value); - return; - case Float32Array: - case Float64Array: - writeDoubleListWithRef(writer, value); - return; - default: - if (Array.isArray(value)) { - writer.writeListWithRef(value); - } - else { - var classname = getClassName(value); - if (classname === 'Object') { - writer.writeMapWithRef(value); - } - else { - writer.writeObjectWithRef(value); - } - } - break; - } - } - - function writeNumber(writer, n) { - var stream = writer.stream; - n = n.valueOf(); - if (n === (n | 0)) { - if (0 <= n && n <= 9) { - stream.writeByte(n + 0x30); - } - else { - stream.writeByte(Tags.TagInteger); - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagSemicolon); - } - } - else if (isNaN(n)) { - stream.writeByte(Tags.TagNaN); - } - else if (isFinite(n)) { - stream.writeByte(Tags.TagDouble); - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagSemicolon); - } - else { - stream.writeByte(Tags.TagInfinity); - stream.writeByte((n > 0) ? Tags.TagPos : Tags.TagNeg); - } - } - - function writeInteger(writer, n) { - var stream = writer.stream; - if (0 <= n && n <= 9) { - stream.writeByte(n + 0x30); - } - else { - if (n < -2147483648 || n > 2147483647) { - stream.writeByte(Tags.TagLong); - } - else { - stream.writeByte(Tags.TagInteger); - } - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagSemicolon); - } - } - - function writeDouble(writer, n) { - var stream = writer.stream; - if (isNaN(n)) { - stream.writeByte(Tags.TagNaN); - } - else if (isFinite(n)) { - stream.writeByte(Tags.TagDouble); - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagSemicolon); - } - else { - stream.writeByte(Tags.TagInfinity); - stream.writeByte((n > 0) ? Tags.TagPos : Tags.TagNeg); - } - } - - function writeBoolean(writer, b) { - writer.stream.writeByte(b.valueOf() ? Tags.TagTrue : Tags.TagFalse); - } - - function writeUTCDate(writer, date) { - writer._refer.set(date); - var stream = writer.stream; - var year = ('0000' + date.getUTCFullYear()).slice(-4); - var month = ('00' + (date.getUTCMonth() + 1)).slice(-2); - var day = ('00' + date.getUTCDate()).slice(-2); - var hour = ('00' + date.getUTCHours()).slice(-2); - var minute = ('00' + date.getUTCMinutes()).slice(-2); - var second = ('00' + date.getUTCSeconds()).slice(-2); - var millisecond = ('000' + date.getUTCMilliseconds()).slice(-3); - stream.writeByte(Tags.TagDate); - stream.writeAsciiString(year + month + day); - stream.writeByte(Tags.TagTime); - stream.writeAsciiString(hour + minute + second); - if (millisecond !== '000') { - stream.writeByte(Tags.TagPoint); - stream.writeAsciiString(millisecond); - } - stream.writeByte(Tags.TagUTC); - } - - function writeDate(writer, date) { - writer._refer.set(date); - var stream = writer.stream; - var year = ('0000' + date.getFullYear()).slice(-4); - var month = ('00' + (date.getMonth() + 1)).slice(-2); - var day = ('00' + date.getDate()).slice(-2); - var hour = ('00' + date.getHours()).slice(-2); - var minute = ('00' + date.getMinutes()).slice(-2); - var second = ('00' + date.getSeconds()).slice(-2); - var millisecond = ('000' + date.getMilliseconds()).slice(-3); - if ((hour === '00') && (minute === '00') && - (second === '00') && (millisecond === '000')) { - stream.writeByte(Tags.TagDate); - stream.writeAsciiString(year + month + day); - } - else if ((year === '1970') && (month === '01') && (day === '01')) { - stream.writeByte(Tags.TagTime); - stream.writeAsciiString(hour + minute + second); - if (millisecond !== '000') { - stream.writeByte(Tags.TagPoint); - stream.writeAsciiString(millisecond); - } - } - else { - stream.writeByte(Tags.TagDate); - stream.writeAsciiString(year + month + day); - stream.writeByte(Tags.TagTime); - stream.writeAsciiString(hour + minute + second); - if (millisecond !== '000') { - stream.writeByte(Tags.TagPoint); - stream.writeAsciiString(millisecond); - } - } - stream.writeByte(Tags.TagSemicolon); - } - - function writeTime(writer, time) { - writer._refer.set(time); - var stream = writer.stream; - var hour = ('00' + time.getHours()).slice(-2); - var minute = ('00' + time.getMinutes()).slice(-2); - var second = ('00' + time.getSeconds()).slice(-2); - var millisecond = ('000' + time.getMilliseconds()).slice(-3); - stream.writeByte(Tags.TagTime); - stream.writeAsciiString(hour + minute + second); - if (millisecond !== '000') { - stream.writeByte(Tags.TagPoint); - stream.writeAsciiString(millisecond); - } - stream.writeByte(Tags.TagSemicolon); - } - - function writeBytes(writer, bytes) { - writer._refer.set(bytes); - var stream = writer.stream; - stream.writeByte(Tags.TagBytes); - var n = bytes.byteLength || bytes.length; - if (n > 0) { - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagQuote); - stream.write(bytes); - } - else { - stream.writeByte(Tags.TagQuote); - } - stream.writeByte(Tags.TagQuote); - } - - function writeString(writer, str) { - writer._refer.set(str); - var stream = writer.stream; - var n = str.length; - stream.writeByte(Tags.TagString); - if (n > 0) { - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagQuote); - stream.writeString(str); - } - else { - stream.writeByte(Tags.TagQuote); - } - stream.writeByte(Tags.TagQuote); - } - - function writeArray(writer, array, writeElem) { - writer._refer.set(array); - var stream = writer.stream; - var n = array.length; - stream.writeByte(Tags.TagList); - if (n > 0) { - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagOpenbrace); - for (var i = 0; i < n; i++) { - writeElem(writer, array[i]); - } - } - else { - stream.writeByte(Tags.TagOpenbrace); - } - stream.writeByte(Tags.TagClosebrace); - } - - function writeIntListWithRef(writer, list) { - if (!writer._refer.write(list)) { - writeArray(writer, list, writeInteger); - } - } - - function writeDoubleListWithRef(writer, list) { - if (!writer._refer.write(list)) { - writeArray(writer, list, writeDouble); - } - } - - function writeMap(writer, map) { - writer._refer.set(map); - var stream = writer.stream; - var fields = []; - for (var key in map) { - if (map.hasOwnProperty(key) && - typeof(map[key]) !== 'function') { - fields[fields.length] = key; - } - } - var n = fields.length; - stream.writeByte(Tags.TagMap); - if (n > 0) { - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagOpenbrace); - for (var i = 0; i < n; i++) { - serialize(writer, fields[i]); - serialize(writer, map[fields[i]]); - } - } - else { - stream.writeByte(Tags.TagOpenbrace); - } - stream.writeByte(Tags.TagClosebrace); - } - - function writeHarmonyMap(writer, map) { - writer._refer.set(map); - var stream = writer.stream; - var n = map.size; - stream.writeByte(Tags.TagMap); - if (n > 0) { - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagOpenbrace); - map.forEach(function(value, key) { - serialize(writer, key); - serialize(writer, value); - }); - } - else { - stream.writeByte(Tags.TagOpenbrace); - } - stream.writeByte(Tags.TagClosebrace); - } - - function writeObject(writer, obj) { - var stream = writer.stream; - var classname = getClassName(obj); - var fields, index; - if (classname in writer._classref) { - index = writer._classref[classname]; - fields = writer._fieldsref[index]; - } - else { - fields = []; - for (var key in obj) { - if (obj.hasOwnProperty(key) && - typeof(obj[key]) !== 'function') { - fields[fields.length] = key.toString(); - } - } - index = writeClass(writer, classname, fields); - } - stream.writeByte(Tags.TagObject); - stream.writeAsciiString('' + index); - stream.writeByte(Tags.TagOpenbrace); - writer._refer.set(obj); - var n = fields.length; - for (var i = 0; i < n; i++) { - serialize(writer, obj[fields[i]]); - } - stream.writeByte(Tags.TagClosebrace); - } - - function writeClass(writer, classname, fields) { - var stream = writer.stream; - var n = fields.length; - stream.writeByte(Tags.TagClass); - stream.writeAsciiString('' + classname.length); - stream.writeByte(Tags.TagQuote); - stream.writeString(classname); - stream.writeByte(Tags.TagQuote); - if (n > 0) { - stream.writeAsciiString('' + n); - stream.writeByte(Tags.TagOpenbrace); - for (var i = 0; i < n; i++) { - writeString(writer, fields[i]); - } - } - else { - stream.writeByte(Tags.TagOpenbrace); - } - stream.writeByte(Tags.TagClosebrace); - var index = writer._fieldsref.length; - writer._classref[classname] = index; - writer._fieldsref[index] = fields; - return index; - } - - Object.defineProperties(Writer.prototype, { - serialize: { value: function(value) { - serialize(this, value); - } }, - writeInteger: { value: function(value) { - writeInteger(this, value); - } }, - writeDouble: { value: function(value) { - writeDouble(this, value); - } }, - writeBoolean: { value: function(value) { - writeBoolean(this, value); - } }, - writeUTCDate: { value: function(value) { - writeUTCDate(this, value); - } }, - writeUTCDateWithRef: { value: function(value) { - if (!this._refer.write(value)) { - writeUTCDate(this, value); - } - } }, - writeDate: { value: function(value) { - writeDate(this, value); - } }, - writeDateWithRef: { value: function(value) { - if (!this._refer.write(value)) { - writeDate(this, value); - } - } }, - writeTime: { value: function(value) { - writeTime(this, value); - } }, - writeTimeWithRef: { value: function(value) { - if (!this._refer.write(value)) { - writeTime(this, value); - } - } }, - writeBytes: { value: function(value) { - writeBytes(this, value); - } }, - writeBytesWithRef: { value: function(value) { - if (!this._refer.write(value)) { - writeBytes(this, value); - } - } }, - writeString: { value: function(value) { - writeString(this, value); - } }, - writeStringWithRef: { value: function(value) { - if (!this._refer.write(value)) { - writeString(this, value); - } - } }, - writeList: { value: function(value) { - writeArray(this, value, serialize); - } }, - writeListWithRef: { value: function(value) { - if (!this._refer.write(value)) { - writeArray(this, value, serialize); - } - } }, - writeMap: { value: function(value) { - if (value instanceof Map) { - writeHarmonyMap(this, value); - } - else { - writeMap(this, value); - } - } }, - writeMapWithRef: { value: function(value) { - if (!this._refer.write(value)) { - if (value instanceof Map) { - writeHarmonyMap(this, value); - } - else { - writeMap(this, value); - } - } - } }, - writeObject: { value: function(value) { - writeObject(this, value); - } }, - writeObjectWithRef: { value: function(value) { - if (!this._refer.write(value)) { - writeObject(this, value); - } - } }, - reset: { value: function() { - this._classref = Object.create(null); - this._fieldsref.length = 0; - this._refer.reset(); - } } - }); - - global.hprose.Writer = Writer; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * Reader.js * - * * - * hprose Reader for HTML5. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var Map = global.Map; - var BytesIO = global.hprose.BytesIO; - var Tags = global.hprose.Tags; - var ClassManager = global.hprose.ClassManager; - - function unexpectedTag(tag, expectTags) { - if (tag && expectTags) { - var expectTagStr = ''; - if (typeof(expectTags) === 'number') { - expectTagStr = String.fromCharCode(expectTags); - } - else { - expectTagStr = String.fromCharCode.apply(String, expectTags); - } - throw new Error('Tag "' + expectTagStr + '" expected, but "' + String.fromCharCode(tag) + '" found in stream'); - } - else if (tag) { - throw new Error('Unexpected serialize tag "' + String.fromCharCode(tag) + '" in stream'); - } - else { - throw new Error('No byte found in stream'); - } - } - - function readRaw(stream) { - var ostream = new BytesIO(); - _readRaw(stream, ostream); - return ostream.bytes; - } - - function _readRaw(stream, ostream) { - __readRaw(stream, ostream, stream.readByte()); - } - - function __readRaw(stream, ostream, tag) { - ostream.writeByte(tag); - switch (tag) { - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case Tags.TagNull: - case Tags.TagEmpty: - case Tags.TagTrue: - case Tags.TagFalse: - case Tags.TagNaN: - break; - case Tags.TagInfinity: - ostream.writeByte(stream.readByte()); - break; - case Tags.TagInteger: - case Tags.TagLong: - case Tags.TagDouble: - case Tags.TagRef: - readNumberRaw(stream, ostream); - break; - case Tags.TagDate: - case Tags.TagTime: - readDateTimeRaw(stream, ostream); - break; - case Tags.TagUTF8Char: - readUTF8CharRaw(stream, ostream); - break; - case Tags.TagBytes: - readBytesRaw(stream, ostream); - break; - case Tags.TagString: - readStringRaw(stream, ostream); - break; - case Tags.TagGuid: - readGuidRaw(stream, ostream); - break; - case Tags.TagList: - case Tags.TagMap: - case Tags.TagObject: - readComplexRaw(stream, ostream); - break; - case Tags.TagClass: - readComplexRaw(stream, ostream); - _readRaw(stream, ostream); - break; - case Tags.TagError: - _readRaw(stream, ostream); - break; - default: unexpectedTag(tag); - } - } - function readNumberRaw(stream, ostream) { - var tag; - do { - tag = stream.readByte(); - ostream.writeByte(tag); - } while (tag !== Tags.TagSemicolon); - } - function readDateTimeRaw(stream, ostream) { - var tag; - do { - tag = stream.readByte(); - ostream.writeByte(tag); - } while (tag !== Tags.TagSemicolon && - tag !== Tags.TagUTC); - } - function readUTF8CharRaw(stream, ostream) { - ostream.writeString(stream.readString(1)); - } - function readBytesRaw(stream, ostream) { - var count = 0; - var tag = 48; - do { - count *= 10; - count += tag - 48; - tag = stream.readByte(); - ostream.writeByte(tag); - } while (tag !== Tags.TagQuote); - ostream.write(stream.read(count + 1)); - } - function readStringRaw(stream, ostream) { - var count = 0; - var tag = 48; - do { - count *= 10; - count += tag - 48; - tag = stream.readByte(); - ostream.writeByte(tag); - } while (tag !== Tags.TagQuote); - ostream.write(stream.readStringAsBytes(count + 1)); - } - function readGuidRaw(stream, ostream) { - ostream.write(stream.read(38)); - } - function readComplexRaw(stream, ostream) { - var tag; - do { - tag = stream.readByte(); - ostream.writeByte(tag); - } while (tag !== Tags.TagOpenbrace); - while ((tag = stream.readByte()) !== Tags.TagClosebrace) { - __readRaw(stream, ostream, tag); - } - ostream.writeByte(tag); - } - - function RawReader(stream) { - Object.defineProperties(this, { - stream: { value : stream }, - readRaw: { value: function() { return readRaw(stream); } } - }); - } - - global.hprose.RawReader = RawReader; - - var fakeReaderRefer = Object.create(null, { - set: { value: function() {} }, - read: { value: function() { unexpectedTag(Tags.TagRef); } }, - reset: { value: function() {} } - }); - - function RealReaderRefer() { - Object.defineProperties(this, { - ref: { value: [] } - }); - } - - Object.defineProperties(RealReaderRefer.prototype, { - set: { value: function(val) { this.ref.push(val); } }, - read: { value: function(index) { return this.ref[index]; } }, - reset: { value: function() { this.ref.length = 0; } } - }); - - function realReaderRefer() { - return new RealReaderRefer(); - } - - function getter(str) { - var obj = global; - var names = str.split('.'); - var i; - for (i = 0; i < names.length; i++) { - obj = obj[names[i]]; - if (obj === undefined) { - return null; - } - } - return obj; - } - function findClass(cn, poslist, i, c) { - if (i < poslist.length) { - var pos = poslist[i]; - cn[pos] = c; - var cls = findClass(cn, poslist, i + 1, '.'); - if (i + 1 < poslist.length) { - if (cls === null) { - cls = findClass(cn, poslist, i + 1, '_'); - } - } - return cls; - } - var classname = cn.join(''); - try { - var cl = getter(classname); - return ((typeof(cl) === 'function') ? cl : null); - } catch (e) { - return null; - } - } - - function getClass(classname) { - var cls = ClassManager.getClass(classname); - if (cls) { return cls; } - cls = getter(classname); - if (typeof(cls) === 'function') { - ClassManager.register(cls, classname); - return cls; - } - var poslist = []; - var pos = classname.indexOf('_'); - while (pos >= 0) { - poslist[poslist.length] = pos; - pos = classname.indexOf('_', pos + 1); - } - if (poslist.length > 0) { - var cn = classname.split(''); - cls = findClass(cn, poslist, 0, '.'); - if (cls === null) { - cls = findClass(cn, poslist, 0, '_'); - } - if (typeof(cls) === 'function') { - ClassManager.register(cls, classname); - return cls; - } - } - cls = function () {}; - Object.defineProperty(cls.prototype, 'getClassName', { value: function () { - return classname; - }}); - ClassManager.register(cls, classname); - return cls; - } - - - function readInt(stream, tag) { - var s = stream.readUntil(tag); - if (s.length === 0) { return 0; } - return parseInt(s, 10); - } - function unserialize(reader) { - var stream = reader.stream; - var tag = stream.readByte(); - switch (tag) { - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: return tag - 48; - case Tags.TagInteger: return readIntegerWithoutTag(stream); - case Tags.TagLong: return readLongWithoutTag(stream); - case Tags.TagDouble: return readDoubleWithoutTag(stream); - case Tags.TagNull: return null; - case Tags.TagEmpty: return ''; - case Tags.TagTrue: return true; - case Tags.TagFalse: return false; - case Tags.TagNaN: return NaN; - case Tags.TagInfinity: return readInfinityWithoutTag(stream); - case Tags.TagDate: return readDateWithoutTag(reader); - case Tags.TagTime: return readTimeWithoutTag(reader); - case Tags.TagBytes: return readBytesWithoutTag(reader); - case Tags.TagUTF8Char: return readUTF8CharWithoutTag(reader); - case Tags.TagString: return readStringWithoutTag(reader); - case Tags.TagGuid: return readGuidWithoutTag(reader); - case Tags.TagList: return readListWithoutTag(reader); - case Tags.TagMap: return reader.useHarmonyMap ? readHarmonyMapWithoutTag(reader) : readMapWithoutTag(reader); - case Tags.TagClass: readClass(reader); return readObject(reader); - case Tags.TagObject: return readObjectWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - case Tags.TagError: throw new Error(readString(reader)); - default: unexpectedTag(tag); - } - } - function readIntegerWithoutTag(stream) { - return readInt(stream, Tags.TagSemicolon); - } - function readInteger(stream) { - var tag = stream.readByte(); - switch (tag) { - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: return tag - 48; - case Tags.TagInteger: return readIntegerWithoutTag(stream); - default: unexpectedTag(tag); - } - } - function readLongWithoutTag(stream) { - var s = stream.readUntil(Tags.TagSemicolon); - var l = parseInt(s, 10); - if (l.toString() === s) { return l; } - return s; - } - function readLong(stream) { - var tag = stream.readByte(); - switch (tag) { - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: return tag - 48; - case Tags.TagInteger: - case Tags.TagLong: return readLongWithoutTag(stream); - default: unexpectedTag(tag); - } - } - function readDoubleWithoutTag(stream) { - return parseFloat(stream.readUntil(Tags.TagSemicolon)); - } - function readDouble(stream) { - var tag = stream.readByte(); - switch (tag) { - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: return tag - 48; - case Tags.TagInteger: - case Tags.TagLong: - case Tags.TagDouble: return readDoubleWithoutTag(stream); - case Tags.TagNaN: return NaN; - case Tags.TagInfinity: return readInfinityWithoutTag(stream); - default: unexpectedTag(tag); - } - } - function readInfinityWithoutTag(stream) { - return ((stream.readByte() === Tags.TagNeg) ? -Infinity : Infinity); - } - function readBoolean(stream) { - var tag = stream.readByte(); - switch (tag) { - case Tags.TagTrue: return true; - case Tags.TagFalse: return false; - default: unexpectedTag(tag); - } - } - function readDateWithoutTag(reader) { - var stream = reader.stream; - var year = parseInt(stream.readAsciiString(4), 10); - var month = parseInt(stream.readAsciiString(2), 10) - 1; - var day = parseInt(stream.readAsciiString(2), 10); - var date; - var tag = stream.readByte(); - if (tag === Tags.TagTime) { - var hour = parseInt(stream.readAsciiString(2), 10); - var minute = parseInt(stream.readAsciiString(2), 10); - var second = parseInt(stream.readAsciiString(2), 10); - var millisecond = 0; - tag = stream.readByte(); - if (tag === Tags.TagPoint) { - millisecond = parseInt(stream.readAsciiString(3), 10); - tag = stream.readByte(); - if ((tag >= 48) && (tag <= 57)) { - stream.skip(2); - tag = stream.readByte(); - if ((tag >= 48) && (tag <= 57)) { - stream.skip(2); - tag = stream.readByte(); - } - } - } - if (tag === Tags.TagUTC) { - date = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond)); - } - else { - date = new Date(year, month, day, hour, minute, second, millisecond); - } - } - else if (tag === Tags.TagUTC) { - date = new Date(Date.UTC(year, month, day)); - } - else { - date = new Date(year, month, day); - } - reader.refer.set(date); - return date; - } - function readDate(reader) { - var tag = reader.stream.readByte(); - switch (tag) { - case Tags.TagNull: return null; - case Tags.TagDate: return readDateWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - default: unexpectedTag(tag); - } - } - function readTimeWithoutTag(reader) { - var stream = reader.stream; - var time; - var hour = parseInt(stream.readAsciiString(2), 10); - var minute = parseInt(stream.readAsciiString(2), 10); - var second = parseInt(stream.readAsciiString(2), 10); - var millisecond = 0; - var tag = stream.readByte(); - if (tag === Tags.TagPoint) { - millisecond = parseInt(stream.readAsciiString(3), 10); - tag = stream.readByte(); - if ((tag >= 48) && (tag <= 57)) { - stream.skip(2); - tag = stream.readByte(); - if ((tag >= 48) && (tag <= 57)) { - stream.skip(2); - tag = stream.readByte(); - } - } - } - if (tag === Tags.TagUTC) { - time = new Date(Date.UTC(1970, 0, 1, hour, minute, second, millisecond)); - } - else { - time = new Date(1970, 0, 1, hour, minute, second, millisecond); - } - reader.refer.set(time); - return time; - } - function readTime(reader) { - var tag = reader.stream.readByte(); - switch (tag) { - case Tags.TagNull: return null; - case Tags.TagTime: return readTimeWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - default: unexpectedTag(tag); - } - } - function readBytesWithoutTag(reader) { - var stream = reader.stream; - var count = readInt(stream, Tags.TagQuote); - var bytes = stream.read(count); - stream.skip(1); - reader.refer.set(bytes); - return bytes; - } - function readBytes(reader) { - var tag = reader.stream.readByte(); - switch (tag) { - case Tags.TagNull: return null; - case Tags.TagEmpty: return new Uint8Array(0); - case Tags.TagBytes: return readBytesWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - default: unexpectedTag(tag); - } - } - function readUTF8CharWithoutTag(reader) { - return reader.stream.readString(1); - } - function _readString(reader) { - var stream = reader.stream; - var s = stream.readString(readInt(stream, Tags.TagQuote)); - stream.skip(1); - return s; - } - function readStringWithoutTag(reader) { - var s = _readString(reader); - reader.refer.set(s); - return s; - } - function readString(reader) { - var tag = reader.stream.readByte(); - switch (tag) { - case Tags.TagNull: return null; - case Tags.TagEmpty: return ''; - case Tags.TagUTF8Char: return readUTF8CharWithoutTag(reader); - case Tags.TagString: return readStringWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - default: unexpectedTag(tag); - } - } - function readGuidWithoutTag(reader) { - var stream = reader.stream; - stream.skip(1); - var s = stream.readAsciiString(36); - stream.skip(1); - reader.refer.set(s); - return s; - } - function readGuid(reader) { - var tag = reader.stream.readByte(); - switch (tag) { - case Tags.TagNull: return null; - case Tags.TagGuid: return readGuidWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - default: unexpectedTag(tag); - } - } - function readListWithoutTag(reader) { - var stream = reader.stream; - var list = []; - reader.refer.set(list); - var count = readInt(stream, Tags.TagOpenbrace); - for (var i = 0; i < count; i++) { - list[i] = unserialize(reader); - } - stream.skip(1); - return list; - } - function readList(reader) { - var tag = reader.stream.readByte(); - switch (tag) { - case Tags.TagNull: return null; - case Tags.TagList: return readListWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - default: unexpectedTag(tag); - } - } - function readMapWithoutTag(reader) { - var stream = reader.stream; - var map = {}; - reader.refer.set(map); - var count = readInt(stream, Tags.TagOpenbrace); - for (var i = 0; i < count; i++) { - var key = unserialize(reader); - var value = unserialize(reader); - map[key] = value; - } - stream.skip(1); - return map; - } - function readMap(reader) { - var tag = reader.stream.readByte(); - switch (tag) { - case Tags.TagNull: return null; - case Tags.TagMap: return readMapWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - default: unexpectedTag(tag); - } - } - function readHarmonyMapWithoutTag(reader) { - var stream = reader.stream; - var map = new Map(); - reader.refer.set(map); - var count = readInt(stream, Tags.TagOpenbrace); - for (var i = 0; i < count; i++) { - var key = unserialize(reader); - var value = unserialize(reader); - map.set(key, value); - } - stream.skip(1); - return map; - } - function readHarmonyMap(reader) { - var tag = reader.stream.readByte(); - switch (tag) { - case Tags.TagNull: return null; - case Tags.TagMap: return readHarmonyMapWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - default: unexpectedTag(tag); - } - } - function readObjectWithoutTag(reader) { - var stream = reader.stream; - var cls = reader.classref[readInt(stream, Tags.TagOpenbrace)]; - var obj = new cls.classname(); - reader.refer.set(obj); - for (var i = 0; i < cls.count; i++) { - obj[cls.fields[i]] = unserialize(reader); - } - stream.skip(1); - return obj; - } - function readObject(reader) { - var tag = reader.stream.readByte(); - switch(tag) { - case Tags.TagNull: return null; - case Tags.TagClass: readClass(reader); return readObject(reader); - case Tags.TagObject: return readObjectWithoutTag(reader); - case Tags.TagRef: return readRef(reader); - default: unexpectedTag(tag); - } - } - function readClass(reader) { - var stream = reader.stream; - var classname = _readString(reader); - var count = readInt(stream, Tags.TagOpenbrace); - var fields = []; - for (var i = 0; i < count; i++) { - fields[i] = readString(reader); - } - stream.skip(1); - classname = getClass(classname); - reader.classref.push({ - classname: classname, - count: count, - fields: fields - }); - } - function readRef(reader) { - return reader.refer.read(readInt(reader.stream, Tags.TagSemicolon)); - } - - function Reader(stream, simple, useHarmonyMap) { - RawReader.call(this, stream); - this.useHarmonyMap = !!useHarmonyMap; - Object.defineProperties(this, { - classref: { value: [] }, - refer: { value: simple ? fakeReaderRefer : realReaderRefer() } - }); - } - - Reader.prototype = Object.create(RawReader.prototype); - Reader.prototype.constructor = Reader; - - Object.defineProperties(Reader.prototype, { - useHarmonyMap: { value: false, writable: true }, - checkTag: { value: function(expectTag, tag) { - if (tag === undefined) { tag = this.stream.readByte(); } - if (tag !== expectTag) { unexpectedTag(tag, expectTag); } - } }, - checkTags: { value: function(expectTags, tag) { - if (tag === undefined) { tag = this.stream.readByte(); } - if (expectTags.indexOf(tag) >= 0) { return tag; } - unexpectedTag(tag, expectTags); - } }, - unserialize: { value: function() { - return unserialize(this); - } }, - readInteger: { value: function() { - return readInteger(this.stream); - } }, - readLong: { value: function() { - return readLong(this.stream); - } }, - readDouble: { value: function() { - return readDouble(this.stream); - } }, - readBoolean: { value: function() { - return readBoolean(this.stream); - } }, - readDateWithoutTag: { value: function() { - return readDateWithoutTag(this); - } }, - readDate: { value: function() { - return readDate(this); - } }, - readTimeWithoutTag: { value: function() { - return readTimeWithoutTag(this); - } }, - readTime: { value: function() { - return readTime(this); - } }, - readBytesWithoutTag: { value: function() { - return readBytesWithoutTag(this); - } }, - readBytes: { value: function() { - return readBytes(this); - } }, - readStringWithoutTag: { value: function() { - return readStringWithoutTag(this); - } }, - readString: { value: function() { - return readString(this); - } }, - readGuidWithoutTag: { value: function() { - return readGuidWithoutTag(this); - } }, - readGuid: { value: function() { - return readGuid(this); - } }, - readListWithoutTag: { value: function() { - return readListWithoutTag(this); - } }, - readList: { value: function() { - return readList(this); - } }, - readMapWithoutTag: { value: function() { - return this.useHarmonyMap ? - readHarmonyMapWithoutTag(this) : - readMapWithoutTag(this); - } }, - readMap: { value: function() { - return this.useHarmonyMap ? - readHarmonyMap(this) : - readMap(this); - } }, - readObjectWithoutTag: { value: function() { - return readObjectWithoutTag(this); - } }, - readObject: { value: function() { - return readObject(this); - } }, - reset: { value: function() { - this.classref.length = 0; - this.refer.reset(); - } } - }); - - global.hprose.Reader = Reader; -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * Formatter.js * - * * - * hprose Formatter for HTML5. * - * * - * LastModified: Feb 23, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global) { - 'use strict'; - - var BytesIO = global.hprose.BytesIO; - var Writer = global.hprose.Writer; - var Reader = global.hprose.Reader; - - function serialize(value, simple) { - var stream = new BytesIO(); - var writer = new Writer(stream, simple); - writer.serialize(value); - return stream; - } - - function unserialize(stream, simple, useHarmonyMap) { - if (!(stream instanceof BytesIO)) { - stream = new BytesIO(stream); - } - return new Reader(stream, simple, useHarmonyMap).unserialize(); - } - - global.hprose.Formatter = { - serialize: function (value, simple) { - return serialize(value, simple).bytes; - }, - unserialize: unserialize - }; - - global.hprose.serialize = serialize; - - global.hprose.unserialize = unserialize; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * ResultMode.js * - * * - * hprose ResultMode for HTML5. * - * * - * LastModified: Feb 23, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global) { - 'use strict'; - - global.hprose.ResultMode = { - Normal: 0, - Serialized: 1, - Raw: 2, - RawWithEndTag: 3 - }; - global.hprose.Normal = global.hprose.ResultMode.Normal; - global.hprose.Serialized = global.hprose.ResultMode.Serialized; - global.hprose.Raw = global.hprose.ResultMode.Raw; - global.hprose.RawWithEndTag = global.hprose.ResultMode.RawWithEndTag; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ -/**********************************************************\ - * * - * Client.js * - * * - * hprose client for HTML5. * - * * - * LastModified: Jul 4, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var setImmediate = global.setImmediate; - var Tags = global.hprose.Tags; - var ResultMode = global.hprose.ResultMode; - var BytesIO = global.hprose.BytesIO; - var Writer = global.hprose.Writer; - var Reader = global.hprose.Reader; - var Future = global.hprose.Future; - - var GETFUNCTIONS = new Uint8Array(1); - GETFUNCTIONS[0] = Tags.TagEnd; - - function noop(){} - - var s_boolean = 'boolean'; - var s_string = 'string'; - var s_number = 'number'; - var s_function = 'function'; - var s_object = 'object'; - - function Client(uri, functions, settings) { - - // private members - var _uri, - _uris = [], - _index = -1, - _byref = false, - _simple = false, - _timeout = 30000, - _retry = 10, - _idempotent = false, - _failswitch = false, - _lock = false, - _tasks = [], - _useHarmonyMap = false, - _onerror = noop, - _filters = [], - _batch = false, - _batches = [], - _ready = new Future(), - _topics = Object.create(null), - _id = null, - _keepAlive = true, - _invokeHandler = invokeHandler, - _batchInvokeHandler = batchInvokeHandler, - _beforeFilterHandler = beforeFilterHandler, - _afterFilterHandler = afterFilterHandler, - _invokeHandlers = [], - _batchInvokeHandlers = [], - _beforeFilterHandlers = [], - _afterFilterHandlers = [], - - self = this; - - function outputFilter(request, context) { - for (var i = 0, n = _filters.length; i < n; i++) { - request = _filters[i].outputFilter(request, context); - } - return request; - } - - function inputFilter(response, context) { - for (var i = _filters.length - 1; i >= 0; i--) { - response = _filters[i].inputFilter(response, context); - } - return response; - } - - function beforeFilterHandler(request, context) { - request = outputFilter(request, context); - return _afterFilterHandler(request, context) - .then(function(response) { - if (context.oneway) { return; } - return inputFilter(response, context); - }); - } - - function afterFilterHandler(request, context) { - return self.sendAndReceive(request, context); - } - - function sendAndReceive(request, context, onsuccess, onerror) { - _beforeFilterHandler(request, context) - .then(onsuccess, function(e) { - if (retry(request, context, onsuccess, onerror)) { return; } - onerror(e); - }); - } - - function retry(data, context, onsuccess, onerror) { - if (context.failswitch) { - if (++_index >= _uris.length) { - _index = 0; - } - _uri = _uris[_index]; - } - if (context.idempotent) { - if (--context.retry >= 0) { - var interval = (context.retry >= 10) ? 500 : (10 - context.retry) * 500; - global.setTimeout(function() { - sendAndReceive(data, context, onsuccess, onerror); - }, interval); - return true; - } - } - return false; - } - - function initService(stub) { - var context = { - retry: _retry, - idempotent: true, - failswitch: true, - timeout: _timeout, - client: self, - userdata: {} - }; - var onsuccess = function(data) { - var error = null; - try { - var stream = new BytesIO(data); - var reader = new Reader(stream, true); - var tag = stream.readByte(); - switch (tag) { - case Tags.TagError: - error = new Error(reader.readString()); - break; - case Tags.TagFunctions: - var functions = reader.readList(); - reader.checkTag(Tags.TagEnd); - setFunctions(stub, functions); - break; - default: - error = new Error('Wrong Response:\r\n' + BytesIO.toString(data)); - break; - } - } - catch (e) { - error = e; - } - if (error !== null) { - _ready.reject(error); - } - else { - _ready.resolve(stub); - } - }; - sendAndReceive(GETFUNCTIONS, context, onsuccess, _ready.reject); - } - - function setFunction(stub, name) { - return function() { - if (_batch) { - return _invoke(stub, name, Array.slice(arguments), true); - } - else { - return Future.all(arguments).then(function(args) { - return _invoke(stub, name, args, false); - }); - } - }; - } - - function setMethods(stub, obj, namespace, name, methods) { - if (obj[name] !== undefined) { return; } - obj[name] = {}; - if (typeof(methods) === s_string || methods.constructor === Object) { - methods = [methods]; - } - if (Array.isArray(methods)) { - for (var i = 0; i < methods.length; i++) { - var m = methods[i]; - if (typeof(m) === s_string) { - obj[name][m] = setFunction(stub, namespace + name + '_' + m); - } - else { - for (var n in m) { - setMethods(stub, obj[name], name + '_', n, m[n]); - } - } - } - } - } - - function setFunctions(stub, functions) { - for (var i = 0; i < functions.length; i++) { - var f = functions[i]; - if (typeof(f) === s_string) { - if (stub[f] === undefined) { - stub[f] = setFunction(stub, f); - } - } - else { - for (var name in f) { - setMethods(stub, stub, '', name, f[name]); - } - } - } - } - - function copyargs(src, dest) { - var n = Math.min(src.length, dest.length); - for (var i = 0; i < n; ++i) { dest[i] = src[i]; } - } - - function initContext(batch) { - if (batch) { - return { - mode: ResultMode.Normal, - byref: _byref, - simple: _simple, - onsuccess: undefined, - onerror: undefined, - useHarmonyMap: _useHarmonyMap, - client: self, - userdata: {} - }; - } - return { - mode: ResultMode.Normal, - byref: _byref, - simple: _simple, - timeout: _timeout, - retry: _retry, - idempotent: _idempotent, - failswitch: _failswitch, - oneway: false, - sync: false, - onsuccess: undefined, - onerror: undefined, - useHarmonyMap: _useHarmonyMap, - client: self, - userdata: {} - }; - } - - function getContext(stub, name, args, batch) { - var context = initContext(batch); - if (name in stub) { - var method = stub[name]; - for (var key in method) { - if (key in context) { - context[key] = method[key]; - } - } - } - var i = 0, n = args.length; - for (; i < n; ++i) { - if (typeof args[i] === s_function) { break; } - } - if (i === n) { return context; } - var extra = args.splice(i, n - i); - context.onsuccess = extra[0]; - n = extra.length; - for (i = 1; i < n; ++i) { - var arg = extra[i]; - switch (typeof arg) { - case s_function: - context.onerror = arg; break; - case s_boolean: - context.byref = arg; break; - case s_number: - context.mode = arg; break; - case s_object: - for (var k in arg) { - if (k in context) { - context[k] = arg[k]; - } - } - break; - } - } - return context; - } - - function encode(name, args, context) { - var stream = new BytesIO(); - stream.writeByte(Tags.TagCall); - var writer = new Writer(stream, context.simple); - writer.writeString(name); - if (args.length > 0 || context.byref) { - writer.reset(); - writer.writeList(args); - if (context.byref) { - writer.writeBoolean(true); - } - } - return stream; - } - - function __invoke(name, args, context, batch) { - if (_lock) { - return Future.promise(function(resolve, reject) { - _tasks.push({ - batch: batch, - name: name, - args: args, - context: context, - resolve: resolve, - reject: reject - }); - }); - } - if (batch) { - return multicall(name, args, context); - } - return call(name, args, context); - } - - function _invoke(stub, name, args, batch) { - return __invoke(name, args, getContext(stub, name, args, batch), batch); - } - - function errorHandling(name, error, context, reject) { - try { - if (context.onerror) { - context.onerror(name, error); - } - else { - _onerror(name, error); - } - reject(error); - } - catch (e) { - reject(e); - } - } - - function invokeHandler(name, args, context) { - var request = encode(name, args, context); - request.writeByte(Tags.TagEnd); - return Future.promise(function(resolve, reject) { - sendAndReceive(request.bytes, context, function(response) { - if (context.oneway) { - resolve(); - return; - } - var result = null; - var error = null; - try { - if (context.mode === ResultMode.RawWithEndTag) { - result = response; - } - else if (context.mode === ResultMode.Raw) { - result = response.subarray(0, response.byteLength - 1); - } - else { - var stream = new BytesIO(response); - var reader = new Reader(stream, false, context.useHarmonyMap); - var tag = stream.readByte(); - if (tag === Tags.TagResult) { - if (context.mode === ResultMode.Serialized) { - result = reader.readRaw(); - } - else { - result = reader.unserialize(); - } - tag = stream.readByte(); - if (tag === Tags.TagArgument) { - reader.reset(); - var _args = reader.readList(); - copyargs(_args, args); - tag = stream.readByte(); - } - } - else if (tag === Tags.TagError) { - error = new Error(reader.readString()); - tag = stream.readByte(); - } - if (tag !== Tags.TagEnd) { - error = new Error('Wrong Response:\r\n' + BytesIO.toString(response)); - } - } - } - catch (e) { - error = e; - } - if (error) { - reject(error); - } - else { - resolve(result); - } - }, reject); - }); - } - - function unlock(sync) { - return function() { - if (sync) { - _lock = false; - setImmediate(function(tasks) { - tasks.forEach(function(task) { - if ('settings' in task) { - endBatch(task.settings) - .then(task.resolve, task.reject); - } - else { - __invoke(task.name, task.args, task.context, task.batch).then(task.resolve, task.reject); - } - }); - }, _tasks); - _tasks = []; - } - }; - } - - function call(name, args, context) { - if (context.sync) { _lock = true; } - var promise = Future.promise(function(resolve, reject) { - _invokeHandler(name, args, context).then(function(result) { - try { - if (context.onsuccess) { - try { - context.onsuccess(result, args); - } - catch (e) { - if (context.onerror) { - context.onerror(name, e); - } - reject(e); - } - } - resolve(result); - } - catch (e) { - reject(e); - } - }, function(error) { - errorHandling(name, error, context, reject); - }); - }); - promise.whenComplete(unlock(context.sync)); - return promise; - } - - function multicall(name, args, context) { - return Future.promise(function(resolve, reject) { - _batches.push({ - args: args, - name: name, - context: context, - resolve: resolve, - reject: reject - }); - }); - } - - function getBatchContext(settings) { - var context = { - timeout: _timeout, - retry: _retry, - idempotent: _idempotent, - failswitch: _failswitch, - oneway: false, - sync: false, - client: self, - userdata: {} - }; - for (var k in settings) { - if (k in context) { - context[k] = settings[k]; - } - } - return context; - } - - function batchInvokeHandler(batches, context) { - var request = batches.reduce(function(stream, item) { - stream.write(encode(item.name, item.args, item.context)); - return stream; - }, new BytesIO()); - request.writeByte(Tags.TagEnd); - return Future.promise(function(resolve, reject) { - sendAndReceive(request.bytes, context, function(response) { - if (context.oneway) { - resolve(batches); - return; - } - var i = -1; - var stream = new BytesIO(response); - var reader = new Reader(stream, false); - var tag = stream.readByte(); - try { - while (tag !== Tags.TagEnd) { - var result = null; - var error = null; - var mode = batches[++i].context.mode; - if (mode >= ResultMode.Raw) { - result = new BytesIO(); - } - if (tag === Tags.TagResult) { - if (mode === ResultMode.Serialized) { - result = reader.readRaw(); - } - else if (mode >= ResultMode.Raw) { - result.writeByte(Tags.TagResult); - result.write(reader.readRaw()); - } - else { - reader.useHarmonyMap = batches[i].context.useHarmonyMap; - reader.reset(); - result = reader.unserialize(); - } - tag = stream.readByte(); - if (tag === Tags.TagArgument) { - if (mode >= ResultMode.Raw) { - result.writeByte(Tags.TagArgument); - result.write(reader.readRaw()); - } - else { - reader.reset(); - var _args = reader.readList(); - copyargs(_args, batches[i].args); - } - tag = stream.readByte(); - } - } - else if (tag === Tags.TagError) { - if (mode >= ResultMode.Raw) { - result.writeByte(Tags.TagError); - result.write(reader.readRaw()); - } - else { - reader.reset(); - error = new Error(reader.readString()); - } - tag = stream.readByte(); - } - if ([Tags.TagEnd, - Tags.TagResult, - Tags.TagError].indexOf(tag) < 0) { - reject(new Error('Wrong Response:\r\n' + BytesIO.toString(response))); - return; - } - if (mode >= ResultMode.Raw) { - if (mode === ResultMode.RawWithEndTag) { - result.writeByte(Tags.TagEnd); - } - batches[i].result = result.bytes; - } - else { - batches[i].result = result; - } - batches[i].error = error; - } - } - catch (e) { - reject(e); - return; - } - resolve(batches); - }, reject); - }); - } - - function beginBatch() { - _batch = true; - } - - function endBatch(settings) { - settings = settings || {}; - _batch = false; - if (_lock) { - return Future.promise(function(resolve, reject) { - _tasks.push({ - batch: true, - settings: settings, - resolve: resolve, - reject: reject - }); - }); - } - var batchSize = _batches.length; - if (batchSize === 0) { return Future.value([]); } - var context = getBatchContext(settings); - if (context.sync) { _lock = true; } - var batches = _batches; - _batches = []; - var promise = Future.promise(function(resolve, reject) { - _batchInvokeHandler(batches, context).then(function(batches) { - batches.forEach(function(i) { - if (i.error) { - errorHandling(i.name, i.error, i.context, i.reject); - } - else { - try { - if (i.context.onsuccess) { - try { - i.context.onsuccess(i.result, i.args); - } - catch (e) { - if (i.context.onerror) { - i.context.onerror(i.name, e); - } - i.reject(e); - } - } - i.resolve(i.result); - } - catch (e) { - i.reject(e); - } - } - delete i.context; - delete i.resolve; - delete i.reject; - }); - resolve(batches); - }, function(error) { - batches.forEach(function(i) { - if ('reject' in i) { - errorHandling(i.name, error, i.context, i.reject); - } - }); - reject(error); - }); - }); - promise.whenComplete(unlock(context.sync)); - return promise; - } - - function getOnError() { - return _onerror; - } - function setOnError(value) { - if (typeof(value) === s_function) { - _onerror = value; - } - } - function getUri() { - return _uri; - } - function getFailswitch() { - return _failswitch; - } - function setFailswitch(value) { - _failswitch = !!value; - } - function getTimeout() { - return _timeout; - } - function setTimeout(value) { - if (typeof(value) === 'number') { - _timeout = value | 0; - } - else { - _timeout = 0; - } - } - function getRetry() { - return _retry; - } - function setRetry(value) { - if (typeof(value) === 'number') { - _retry = value | 0; - } - else { - _retry = 0; - } - } - function getIdempotent() { - return _idempotent; - } - function setIdempotent(value) { - _idempotent = !!value; - } - function setKeepAlive(value) { - _keepAlive = !!value; - } - function getKeepAlive() { - return _keepAlive; - } - function getByRef() { - return _byref; - } - function setByRef(value) { - _byref = !!value; - } - function getSimpleMode() { - return _simple; - } - function setSimpleMode(value) { - _simple = !!value; - } - function getUseHarmonyMap() { - return _useHarmonyMap; - } - function setUseHarmonyMap(value) { - _useHarmonyMap = !!value; - } - function getFilter() { - if (_filters.length === 0) { - return null; - } - if (_filters.length === 1) { - return _filters[0]; - } - return _filters.slice(); - } - function setFilter(filter) { - _filters.length = 0; - if (Array.isArray(filter)) { - filter.forEach(function(filter) { - addFilter(filter); - }); - } - else { - addFilter(filter); - } - } - function addFilter(filter) { - if (filter && - typeof filter.inputFilter === 'function' && - typeof filter.outputFilter === 'function') { - _filters.push(filter); - } - } - function removeFilter(filter) { - var i = _filters.indexOf(filter); - if (i === -1) { - return false; - } - _filters.splice(i, 1); - return true; - } - function filters() { - return _filters; - } - function useService(uri, functions, create) { - if (create === undefined) { - if (typeof(functions) === s_boolean) { - create = functions; - functions = false; - } - if (!functions) { - if (typeof(uri) === s_boolean) { - create = uri; - uri = false; - } - else if (uri && uri.constructor === Object || - Array.isArray(uri)) { - functions = uri; - uri = false; - } - } - } - var stub = self; - if (create) { - stub = {}; - } - if (!uri && !_uri) { - return new Error('You should set server uri first!'); - } - if (uri) { - _uri = uri; - } - if (typeof(functions) === s_string || - (functions && functions.constructor === Object)) { - functions = [functions]; - } - if (!Array.isArray(functions)) { - setImmediate(initService, stub); - return _ready; - } - setFunctions(stub, functions); - _ready.resolve(stub); - return stub; - } - function invoke(name, args, onsuccess/*, onerror, settings*/) { - var argc = arguments.length; - if ((argc < 1) || (typeof name !== s_string)) { - throw new Error('name must be a string'); - } - if (argc === 1) { args = []; } - if (argc === 2) { - if (!Array.isArray(args)) { - var _args = []; - if (typeof args !== s_function) { - _args.push(noop); - } - _args.push(args); - args = _args; - } - } - if (argc > 2) { - if (typeof onsuccess !== s_function) { - args.push(noop); - } - for (var i = 2; i < argc; i++) { - args.push(arguments[i]); - } - } - return _invoke(self, name, args, _batch); - } - function ready(onComplete, onError) { - return _ready.then(onComplete, onError); - } - function getTopic(name, id, create) { - if (_topics[name]) { - var topics = _topics[name]; - if (topics[id]) { - return topics[id]; - } - return null; - } - if (create) { - _topics[name] = Object.create(null); - } - return null; - } - // subscribe(name, callback, timeout) - // subscribe(name, id, callback, timeout) - function subscribe(name, id, callback, timeout) { - if (typeof name !== s_string) { - throw new TypeError('topic name must be a string.'); - } - if (id === undefined || id === null) { - if (typeof callback === s_function) { - id = callback; - } - else { - throw new TypeError('callback must be a function.'); - } - } - if (typeof id === s_function) { - timeout = callback; - callback = id; - if (_id === null) { - _id = autoId(); - } - _id.then(function(id) { - subscribe(name, id, callback, timeout); - }); - return; - } - if (typeof callback !== s_function) { - throw new TypeError('callback must be a function.'); - } - if (Future.isPromise(id)) { - id.then(function(id) { - subscribe(name, id, callback, timeout); - }); - return; - } - if (timeout === undefined) { timeout = _timeout; } - var topic = getTopic(name, id, true); - if (topic === null) { - var cb = function() { - _invoke(self, name, [id, topic.handler, cb, { - idempotent: true, - failswitch: false, - timeout: timeout - }], false); - }; - topic = { - handler: function(result) { - var topic = getTopic(name, id, false); - if (topic) { - if (result !== null) { - var callbacks = topic.callbacks; - for (var i = 0, n = callbacks.length; i < n; ++i) { - try { - callbacks[i](result); - } - catch (e) {} - } - } - if (getTopic(name, id, false) !== null) { cb(); } - } - }, - callbacks: [callback] - }; - _topics[name][id] = topic; - cb(); - } - else if (topic.callbacks.indexOf(callback) < 0) { - topic.callbacks.push(callback); - } - } - function delTopic(topics, id, callback) { - if (topics) { - if (typeof callback === s_function) { - var topic = topics[id]; - if (topic) { - var callbacks = topic.callbacks; - var p = callbacks.indexOf(callback); - if (p >= 0) { - callbacks[p] = callbacks[callbacks.length - 1]; - callbacks.length--; - } - if (callbacks.length === 0) { - delete topics[id]; - } - } - } - else { - delete topics[id]; - } - } - } - // unsubscribe(name) - // unsubscribe(name, callback) - // unsubscribe(name, id) - // unsubscribe(name, id, callback) - function unsubscribe(name, id, callback) { - if (typeof name !== s_string) { - throw new TypeError('topic name must be a string.'); - } - if (id === undefined || id === null) { - if (typeof callback === s_function) { - id = callback; - } - else { - delete _topics[name]; - return; - } - } - if (typeof id === s_function) { - callback = id; - id = null; - } - if (id === null) { - if (_id === null) { - if (_topics[name]) { - var topics = _topics[name]; - for (id in topics) { - delTopic(topics, id, callback); - } - } - } - else { - _id.then(function(id) { - unsubscribe(name, id, callback); - }); - } - } - else if (Future.isPromise(id)) { - id.then(function(id) { - unsubscribe(name, id, callback); - }); - } - else { - delTopic(_topics[name], id, callback); - } - } - function getId() { - return _id; - } - function autoId() { - return _invoke(self, '#', [], false); - } - autoId.sync = true; - autoId.idempotent = true; - autoId.failswitch = true; - function addInvokeHandler(handler) { - _invokeHandlers.push(handler); - _invokeHandler = _invokeHandlers.reduceRight( - function(next, handler) { - return function(name, args, context) { - return Future.sync(function() { - return handler(name, args, context, next); - }); - }; - }, invokeHandler); - } - function addBatchInvokeHandler(handler) { - _batchInvokeHandlers.push(handler); - _batchInvokeHandler = _batchInvokeHandlers.reduceRight( - function(next, handler) { - return function(batches, context) { - return Future.sync(function() { - return handler(batches, context, next); - }); - }; - }, batchInvokeHandler); - } - function addBeforeFilterHandler(handler) { - _beforeFilterHandlers.push(handler); - _beforeFilterHandler = _beforeFilterHandlers.reduceRight( - function(next, handler) { - return function(request, context) { - return Future.sync(function() { - return handler(request, context, next); - }); - }; - }, beforeFilterHandler); - } - function addAfterFilterHandler(handler) { - _afterFilterHandlers.push(handler); - _afterFilterHandler = _afterFilterHandlers.reduceRight( - function(next, handler) { - return function(request, context) { - return Future.sync(function() { - return handler(request, context, next); - }); - }; - }, afterFilterHandler); - } - function use(handler) { - addInvokeHandler(handler); - return self; - } - var batch = Object.create(null, { - begin: { value: beginBatch }, - end: { value: endBatch }, - use: { value: function(handler) { - addBatchInvokeHandler(handler); - return batch; - } } - }); - var beforeFilter = Object.create(null, { - use: { value: function(handler) { - addBeforeFilterHandler(handler); - return beforeFilter; - } } - }); - var afterFilter = Object.create(null, { - use: { value: function(handler) { - addAfterFilterHandler(handler); - return afterFilter; - } } - }); - Object.defineProperties(this, { - '#': { value: autoId }, - onerror: { get: getOnError, set: setOnError }, - uri: { get: getUri }, - id: { get: getId }, - failswitch: { get: getFailswitch, set: setFailswitch }, - timeout: { get: getTimeout, set: setTimeout }, - retry: { get: getRetry, set: setRetry }, - idempotent: { get: getIdempotent, set: setIdempotent }, - keepAlive: { get: getKeepAlive, set: setKeepAlive }, - byref: { get: getByRef, set: setByRef }, - simple: { get: getSimpleMode, set: setSimpleMode }, - useHarmonyMap: { get: getUseHarmonyMap, set: setUseHarmonyMap }, - filter: { get: getFilter, set: setFilter }, - addFilter: { value: addFilter }, - removeFilter: { value: removeFilter }, - filters: { get: filters }, - useService: { value: useService }, - invoke: { value: invoke }, - ready: { value: ready }, - subscribe: { value: subscribe }, - unsubscribe: { value: unsubscribe }, - use: { value: use }, - batch: { value: batch }, - beforeFilter: { value: beforeFilter }, - afterFilter: { value: afterFilter } - }); - /* function constructor */ { - if ((settings) && (typeof settings === s_object)) { - ['failswitch', 'timeout', 'retry', 'idempotent', - 'keepAlive', 'byref', 'simple','useHarmonyMap', - 'filter'].forEach(function(key) { - if (key in settings) { - self[key] = settings[key]; - } - }); - } - if (typeof(uri) === s_string) { - _uris = [uri]; - _index = 0; - useService(uri, functions); - } - else if (Array.isArray(uri)) { - _uris = uri; - _index = Math.floor(Math.random() * _uris.length); - useService(_uris[_index], functions); - } - } - } - - function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; - var protocol = parser.protocol; - if (protocol === 'http:' || - protocol === 'https:' || - protocol === 'tcp:' || - protocol === 'tcp4:'|| - protocol === 'tcp6:' || - protocol === 'tcps:' || - protocol === 'tcp4s:' || - protocol === 'tcp6s:' || - protocol === 'tls:' || - protocol === 'ws:' || - protocol === 'wss:') { - return; - } - throw new Error('The ' + protocol + ' client isn\'t implemented.'); - } - - function create(uri, functions, settings) { - try { - return global.hprose.HttpClient.create(uri, functions, settings); - } - catch(e) {} - try { - return global.hprose.TcpClient.create(uri, functions, settings); - } - catch(e) {} - try { - return global.hprose.WebSocketClient.create(uri, functions, settings); - } - catch(e) {} - if (typeof uri === 'string') { - checkuri(uri); - } - else if (Array.isArray(uri)) { - uri.forEach(function(uri) { checkuri(uri); }); - throw new Error('Not support multiple protocol.'); - } - throw new Error('You should set server uri first!'); - } - - Object.defineProperty(Client, 'create', { value: create }); - - global.hprose.Client = Client; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ -/**********************************************************\ - * * - * HttpClient.js * - * * - * hprose http client for HTML5. * - * * - * LastModified: Feb 28, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var Client = global.hprose.Client; - var Future = global.hprose.Future; - var BytesIO = global.hprose.BytesIO; - var TimeoutError = global.TimeoutError; - - function noop(){} - - function HttpClient(uri, functions, settings) { - if (this.constructor !== HttpClient) { - return new HttpClient(uri, functions, settings); - } - Client.call(this, uri, functions, settings); - var _header = Object.create(null); - var _onreqprogress = noop; - var _onresprogress = noop; - - var self = this; - - function xhrPost(request, env) { - var future = new Future(); - var xhr = new XMLHttpRequest(); - xhr.open('POST', self.uri, true); - if (global.location !== undefined && global.location.protocol !== 'file:') { - xhr.withCredentials = 'true'; - } - xhr.responseType = 'arraybuffer'; - for (var name in _header) { - xhr.setRequestHeader(name, _header[name]); - } - xhr.onload = function() { - xhr.onload = noop; - if (xhr.status) { - if (xhr.status === 200) { - future.resolve(new Uint8Array(xhr.response)); - } - else { - future.reject(new Error(xhr.status + ':' + xhr.statusText)); - } - } - }; - xhr.onerror = function() { - future.reject(new Error('error')); - }; - if (xhr.upload !== undefined) { - xhr.upload.onprogress = _onreqprogress; - } - xhr.onprogress = _onresprogress; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { - xhr.onload = noop; - xhr.onerror = noop; - xhr.abort(); - throw e; - }, - function(e) { - return e instanceof TimeoutError; - }); - } - if (request.constructor === String || ArrayBuffer.isView) { - xhr.send(request); - } - else if (request.buffer.slice) { - xhr.send(request.buffer.slice(0, request.length)); - } - else { - var buf = new Uint8Array(request.length); - buf.set(request); - xhr.send(buf.buffer); - } - return future; - } - - function apiPost(request, env) { - var future = new Future(); - global.api.ajax({ - url: self.uri(), - method: 'post', - data: { body: BytesIO.toString(request) }, - timeout: env.timeout, - dataType: 'text', - headers: _header, - certificate: self.certificate - }, function(ret, err) { - if (ret) { - future.resolve((new BytesIO(ret)).takeBytes()); - } - else { - future.reject(new Error(err.msg)); - } - }); - return future; - } - - function sendAndReceive(request, env) { - var apicloud = (typeof(global.api) !== "undefined" && - typeof(global.api.ajax) !== "undefined"); - var future = apicloud ? apiPost(request, env) : - xhrPost(request, env); - if (env.oneway) { future.resolve(); } - return future; - } - - function setOnRequestProgress(value) { - if (typeof(value) === 'function') { - _onreqprogress = value; - } - } - function getOnRequestProgress() { - return _onreqprogress; - } - function setOnResponseProgress(value) { - if (typeof(value) === 'function') { - _onresprogress = value; - } - } - function getOnResponseProgress() { - return _onresprogress; - } - function setHeader(name, value) { - if (name.toLowerCase() !== 'content-type' && - name.toLowerCase() !== 'content-length') { - if (value) { - _header[name] = value; - } - else { - delete _header[name]; - } - } - } - Object.defineProperties(this, { - onprogress: { get: getOnRequestProgress, set: setOnRequestProgress }, - onRequestProgress: { get: getOnRequestProgress, set: setOnRequestProgress }, - onResponseProgress: { get: getOnResponseProgress, set: setOnResponseProgress }, - setHeader: { value: setHeader }, - sendAndReceive: { value: sendAndReceive } - }); - } - - function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; - if (parser.protocol === 'http:' || - parser.protocol === 'https:') { - return; - } - throw new Error('This client desn\'t support ' + parser.protocol + ' scheme.'); - } - - function create(uri, functions, settings) { - if (typeof uri === 'string') { - checkuri(uri); - } - else if (Array.isArray(uri)) { - uri.forEach(function(uri) { checkuri(uri); }); - } - else { - throw new Error('You should set server uri first!'); - } - return new HttpClient(uri, functions, settings); - } - - Object.defineProperty(HttpClient, 'create', { value: create }); - - global.hprose.HttpClient = HttpClient; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ -/**********************************************************\ - * * - * WebSocketClient.js * - * * - * hprose websocket client for HTML5. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var BytesIO = global.hprose.BytesIO; - var Client = global.hprose.Client; - var Future = global.hprose.Future; - var TimeoutError = global.TimeoutError; - - var WebSocket = global.WebSocket || global.MozWebSocket; - - function noop(){} - function WebSocketClient(uri, functions, settings) { - if (typeof(WebSocket) === "undefined") { - throw new Error('WebSocket is not supported by this browser.'); - } - if (this.constructor !== WebSocketClient) { - return new WebSocketClient(uri, functions, settings); - } - - Client.call(this, uri, functions, settings); - - var _id = 0; - var _count = 0; - var _futures = []; - var _requests = []; - var _ready = null; - var ws = null; - - var self = this; - - function getNextId() { - return (_id < 0x7fffffff) ? ++_id : _id = 0; - } - function send(id, request) { - var bytes = new BytesIO(); - bytes.writeInt32BE(id); - if (request.constructor === String) { - bytes.writeString(request); - } - else { - bytes.write(request); - } - var message = bytes.bytes; - if (ArrayBuffer.isView) { - ws.send(message); - } - else if (message.buffer.slice) { - ws.send(message.buffer.slice(0, message.length)); - } - else { - ws.send(message.buffer); - } - } - function onopen(e) { - _ready.resolve(e); - } - function onmessage(e) { - var bytes = new BytesIO(e.data); - var id = bytes.readInt32BE(); - var future = _futures[id]; - delete _futures[id]; - if (future !== undefined) { - --_count; - future.resolve(bytes.read(bytes.length - 4)); - } - if ((_count < 100) && (_requests.length > 0)) { - ++_count; - var request = _requests.shift(); - _ready.then(function() { send(request[0], request[1]); }); - } - if (_count === 0 && !self.keepAlive) { - close(); - } - } - function onclose(e) { - _futures.forEach(function(future, id) { - future.reject(new Error(e.code + ':' + e.reason)); - delete _futures[id]; - }); - _count = 0; - ws = null; - } - function connect() { - _ready = new Future(); - ws = new WebSocket(self.uri); - ws.binaryType = 'arraybuffer'; - ws.onopen = onopen; - ws.onmessage = onmessage; - ws.onerror = noop; - ws.onclose = onclose; - } - function sendAndReceive(request, env) { - if (ws === null || - ws.readyState === WebSocket.CLOSING || - ws.readyState === WebSocket.CLOSED) { - connect(); - } - var id = getNextId(); - var future = new Future(); - _futures[id] = future; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { - delete _futures[id]; - --_count; - throw e; - }, - function(e) { - return e instanceof TimeoutError; - }); - } - if (_count < 100) { - ++_count; - _ready.then(function() { send(id, request); }); - } - else { - _requests.push([id, request]); - } - if (env.oneway) { future.resolve(); } - return future; - } - function close() { - if (ws !== null) { - ws.onopen = noop; - ws.onmessage = noop; - ws.onclose = noop; - ws.close(); - } - } - - Object.defineProperties(this, { - sendAndReceive: { value: sendAndReceive }, - close: { value: close } - }); - } - - function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; - if (parser.protocol === 'ws:' || - parser.protocol === 'wss:') { - return; - } - throw new Error('This client desn\'t support ' + parser.protocol + ' scheme.'); - } - - function create(uri, functions, settings) { - if (typeof uri === 'string') { - checkuri(uri); - } - else if (Array.isArray(uri)) { - uri.forEach(function(uri) { checkuri(uri); }); - } - else { - throw new Error('You should set server uri first!'); - } - return new WebSocketClient(uri, functions, settings); - } - - Object.defineProperty(WebSocketClient, 'create', { value: create }); - - global.hprose.WebSocketClient = WebSocketClient; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ -/**********************************************************\ - * * - * ChromeTcpSocket.js * - * * - * chrome tcp socket for JavaScript. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var Future = global.hprose.Future; - - function noop(){} - - var socketPool = {}; - var socketManager = null; - - function receiveListener(info) { - var socket = socketPool[info.socketId]; - socket.onreceive(info.data); - } - - function receiveErrorListener(info) { - var socket = socketPool[info.socketId]; - socket.onerror(info.resultCode); - socket.destroy(); - } - - function ChromeTcpSocket() { - if (socketManager === null) { - socketManager = global.chrome.sockets.tcp; - socketManager.onReceive.addListener(receiveListener); - socketManager.onReceiveError.addListener(receiveErrorListener); - } - this.socketId = new Future(); - this.connected = false; - this.timeid = undefined; - this.onclose = noop; - this.onconnect = noop; - this.onreceive = noop; - this.onerror = noop; - } - - Object.defineProperties(ChromeTcpSocket.prototype, { - connect: { value: function(address, port, options) { - var self = this; - socketManager.create({ persistent: options && options.persistent }, function(createInfo) { - if (options) { - if ('noDelay' in options) { - socketManager.setNoDelay(createInfo.socketId, options.noDelay, function(result) { - if (result < 0) { - self.socketId.reject(result); - socketManager.disconnect(createInfo.socketId); - socketManager.close(createInfo.socketId); - self.onclose(); - } - }); - } - if ('keepAlive' in options) { - socketManager.setKeepAlive(createInfo.socketId, options.keepAlive, function(result) { - if (result < 0) { - self.socketId.reject(result); - socketManager.disconnect(createInfo.socketId); - socketManager.close(createInfo.socketId); - self.onclose(); - } - }); - } - } - if (options && options.tls) { - socketManager.setPaused(createInfo.socketId, true, function() { - socketManager.connect(createInfo.socketId, address, port, function(result) { - if (result < 0) { - self.socketId.reject(result); - socketManager.disconnect(createInfo.socketId); - socketManager.close(createInfo.socketId); - self.onclose(); - } - else { - socketManager.secure(createInfo.socketId, function(secureResult) { - if (secureResult !== 0) { - self.socketId.reject(result); - socketManager.disconnect(createInfo.socketId); - socketManager.close(createInfo.socketId); - self.onclose(); - } - else { - socketManager.setPaused(createInfo.socketId, false, function() { - self.socketId.resolve(createInfo.socketId); - }); - } - }); - } - }); - }); - } - else { - socketManager.connect(createInfo.socketId, address, port, function(result) { - if (result < 0) { - self.socketId.reject(result); - socketManager.disconnect(createInfo.socketId); - socketManager.close(createInfo.socketId); - self.onclose(); - } - else { - self.socketId.resolve(createInfo.socketId); - } - }); - } - }); - this.socketId.then(function(socketId) { - socketPool[socketId] = self; - self.connected = true; - self.onconnect(socketId); - }, function(reason) { - self.onerror(reason); - }); - } }, - send: { value: function(data) { - var self = this; - var promise = new Future(); - this.socketId.then(function(socketId) { - socketManager.send(socketId, data, function(sendInfo) { - if (sendInfo.resultCode < 0) { - self.onerror(sendInfo.resultCode); - promise.reject(sendInfo.resultCode); - self.destroy(); - } - else { - promise.resolve(sendInfo.bytesSent); - } - }); - }); - return promise; - } }, - destroy: { value: function() { - var self = this; - this.connected = false; - this.socketId.then(function(socketId) { - socketManager.disconnect(socketId); - socketManager.close(socketId); - delete socketPool[socketId]; - self.onclose(); - }); - } }, - ref: { value: function() { - this.socketId.then(function(socketId) { - socketManager.setPaused(socketId, false); - }); - } }, - unref: { value: function() { - this.socketId.then(function(socketId) { - socketManager.setPaused(socketId, true); - }); - } }, - clearTimeout: { value: function() { - if (this.timeid !== undefined) { - global.clearTimeout(this.timeid); - } - } }, - setTimeout: { value: function(timeout, fn) { - this.clearTimeout(); - this.timeid = global.setTimeout(fn, timeout); - } } - }); - - global.hprose.ChromeTcpSocket = ChromeTcpSocket; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ -/**********************************************************\ - * * - * APICloudTcpSocket.js * - * * - * APICloud tcp socket for HTML5. * - * * - * LastModified: Mar 8, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var Future = global.hprose.Future; - var atob = global.atob; - var btoa = global.btoa; - var toUint8Array = global.hprose.toUint8Array; - var toBinaryString = global.hprose.toBinaryString; - - function noop(){} - - var socketPool = {}; - var socketManager = null; - - function APICloudTcpSocket() { - if (socketManager === null) { - socketManager = global.api.require('socketManager'); - } - this.socketId = new Future(); - this.connected = false; - this.timeid = undefined; - this.onclose = noop; - this.onconnect = noop; - this.onreceive = noop; - this.onerror = noop; - } - - Object.defineProperties(APICloudTcpSocket.prototype, { - connect: { value: function(address, port, options) { - var self = this; - socketManager.createSocket({ - type: 'tcp', - host: address, - port: port, - timeout: options.timeout, - returnBase64: true - }, - function(ret/*, err*/) { - if (ret) { - switch(ret.state) { - case 101: break; - case 102: self.socketId.resolve(ret.sid); break; - case 103: self.onreceive(toUint8Array(atob(ret.data.replace(/\s+/g, '')))); break; - case 201: self.socketId.reject(new Error('Create TCP socket failed')); break; - case 202: self.socketId.reject(new Error('TCP connection failed')); break; - case 203: self.onclose(); self.onerror(new Error('Abnormal disconnect connection')); break; - case 204: self.onclose(); break; - case 205: self.onclose(); self.onerror(new Error('Unknown error')); break; - } - } - }); - this.socketId.then(function(socketId) { - socketPool[socketId] = self; - self.connected = true; - self.onconnect(socketId); - }, function(reason) { - self.onerror(reason); - }); - } }, - send: { value: function(data) { - var self = this; - var promise = new Future(); - this.socketId.then(function(socketId) { - socketManager.write({ - sid: socketId, - data: btoa(toBinaryString(data)), - base64: true - }, - function(ret, err) { - if (ret.status) { - promise.resolve(); - } - else { - self.onerror(new Error(err.msg)); - promise.reject(err.msg); - self.destroy(); - } - }); - }); - return promise; - } }, - destroy: { value: function() { - var self = this; - this.connected = false; - this.socketId.then(function(socketId) { - socketManager.closeSocket({ - sid: socketId - }, - function(ret, err) { - if (!ret.status) { - self.onerror(new Error(err.msg)); - } - }); - delete socketPool[socketId]; - //self.onclose(); - }); - } }, - ref: { value: noop }, - unref: { value: noop }, - clearTimeout: { value: function() { - if (this.timeid !== undefined) { - global.clearTimeout(this.timeid); - } - } }, - setTimeout: { value: function(timeout, fn) { - this.clearTimeout(); - this.timeid = global.setTimeout(fn, timeout); - } } - }); - - global.hprose.APICloudTcpSocket = APICloudTcpSocket; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ -/**********************************************************\ - * * - * TcpClient.js * - * * - * hprose tcp client for HTML5. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global, undefined) { - 'use strict'; - - var ChromeTcpSocket = global.hprose.ChromeTcpSocket; - var APICloudTcpSocket = global.hprose.APICloudTcpSocket; - var Client = global.hprose.Client; - var BytesIO = global.hprose.BytesIO; - var Future = global.hprose.Future; - var TimeoutError = global.TimeoutError; - - function noop(){} - - function setReceiveHandler(socket, onreceive) { - socket.onreceive = function(data) { - if (!('receiveEntry' in socket)) { - socket.receiveEntry = { - stream: new BytesIO(), - headerLength: 4, - dataLength: -1, - id: null - }; - } - var entry = socket.receiveEntry; - var stream = entry.stream; - var headerLength = entry.headerLength; - var dataLength = entry.dataLength; - var id = entry.id; - stream.write(data); - while (true) { - if ((dataLength < 0) && (stream.length >= headerLength)) { - dataLength = stream.readInt32BE(); - if ((dataLength & 0x80000000) !== 0) { - dataLength &= 0x7fffffff; - headerLength = 8; - } - } - if ((headerLength === 8) && (id === null) && (stream.length >= headerLength)) { - id = stream.readInt32BE(); - } - if ((dataLength >= 0) && ((stream.length - headerLength) >= dataLength)) { - onreceive(stream.read(dataLength), id); - headerLength = 4; - id = null; - stream.trunc(); - dataLength = -1; - } - else { - break; - } - } - entry.stream = stream; - entry.headerLength = headerLength; - entry.dataLength = dataLength; - entry.id = id; - }; - } - - function TcpTransporter(client) { - if (client) { - this.client = client; - this.uri = this.client.uri; - this.size = 0; - this.pool = []; - this.requests = []; - } - } - - Object.defineProperties(TcpTransporter.prototype, { - create: { value: function() { - var parser = document.createElement('a'); - parser.href = this.uri; - var protocol = parser.protocol; - // HTMLAnchorElement can't parse TCP protocol - // replace to HTTP can be correctly resolved. - parser.protocol = "http:"; - var address = parser.hostname; - var port = parseInt(parser.port, 10); - var tls; - if (protocol === 'tcp:' || - protocol === 'tcp4:' || - protocol === 'tcp6:') { - tls = false; - } - else if (protocol === 'tcps:' || - protocol === 'tcp4s:' || - protocol === 'tcp6s:' || - protocol === 'tls:') { - tls = true; - } - else { - throw new Error('Unsupported ' + protocol + ' protocol!'); - } - var conn; - if (global.chrome && global.chrome.sockets && global.chrome.sockets.tcp) { - conn = new ChromeTcpSocket(); - } - else if (global.api && global.api.require) { - conn = new APICloudTcpSocket(); - } - else { - throw new Error('TCP Socket is not supported by this browser or platform.'); - } - var self = this; - conn.connect(address, port, { - persistent: true, - tls: tls, - timeout: this.client.timeout, - noDelay: this.client.noDelay, - keepAlive: this.client.keepAlive - }); - conn.onclose = function() { --self.size; }; - ++this.size; - return conn; - } } - }); - - function FullDuplexTcpTransporter(client) { - TcpTransporter.call(this, client); - } - - FullDuplexTcpTransporter.prototype = Object.create( - TcpTransporter.prototype, { - fetch: { value: function() { - var pool = this.pool; - while (pool.length > 0) { - var conn = pool.shift(); - if (conn.connected) { - if (conn.count === 0) { - conn.clearTimeout(); - conn.ref(); - } - return conn; - } - } - return null; - } }, - init: { value: function(conn) { - var self = this; - conn.count = 0; - conn.futures = {}; - conn.timeoutIds = {}; - setReceiveHandler(conn, function(data, id) { - var future = conn.futures[id]; - if (future) { - self.clean(conn, id); - if (conn.count === 0) { - self.recycle(conn); - } - future.resolve(data); - } - }); - conn.onerror = function (e) { - var futures = conn.futures; - for (var id in futures) { - var future = futures[id]; - self.clean(conn, id); - future.reject(e); - } - }; - } }, - recycle: { value: function(conn) { - conn.unref(); - conn.setTimeout(this.client.poolTimeout, function() { - conn.destroy(); - }); - } }, - clean: { value: function(conn, id) { - if (conn.timeoutIds[id] !== undefined) { - global.clearTimeout(conn.timeoutIds[id]); - delete conn.timeoutIds[id]; - } - delete conn.futures[id]; - --conn.count; - this.sendNext(conn); - } }, - sendNext: { value: function(conn) { - if (conn.count < 10) { - if (this.requests.length > 0) { - var request = this.requests.shift(); - request.push(conn); - this.send.apply(this, request); - } - else { - this.pool.push(conn); - } - } - } }, - send: { value: function(request, future, id, env, conn) { - var self = this; - var timeout = env.timeout; - if (timeout > 0) { - conn.timeoutIds[id] = global.setTimeout(function() { - self.clean(conn, id); - if (conn.count === 0) { - self.recycle(conn); - } - future.reject(new TimeoutError('timeout')); - }, timeout); - } - conn.count++; - conn.futures[id] = future; - - var len = request.length; - var buf = new BytesIO(8 + len); - buf.writeInt32BE(len | 0x80000000); - buf.writeInt32BE(id); - buf.write(request); - conn.send(buf.buffer).then(function() { - self.sendNext(conn); - }); - } }, - getNextId: { value: function() { - return (this.nextid < 0x7fffffff) ? ++this.nextid : this.nextid = 0; - } }, - sendAndReceive: { value: function(request, future, env) { - var conn = this.fetch(); - var id = this.getNextId(); - if (conn) { - this.send(request, future, id, env, conn); - } - else if (this.size < this.client.maxPoolSize) { - conn = this.create(); - conn.onerror = function(e) { - future.reject(e); - }; - var self = this; - conn.onconnect = function() { - self.init(conn); - self.send(request, future, id, env, conn); - }; - } - else { - this.requests.push([request, future, id, env]); - } - } } - }); - - FullDuplexTcpTransporter.prototype.constructor = TcpTransporter; - - function HalfDuplexTcpTransporter(client) { - TcpTransporter.call(this, client); - } - - HalfDuplexTcpTransporter.prototype = Object.create( - TcpTransporter.prototype, { - fetch: { value: function() { - var pool = this.pool; - while (pool.length > 0) { - var conn = pool.shift(); - if (conn.connected) { - conn.clearTimeout(); - conn.ref(); - return conn; - } - } - return null; - } }, - recycle: { value: function(conn) { - conn.unref(); - conn.setTimeout(this.client.poolTimeout, function() { - conn.destroy(); - }); - this.pool.push(conn); - } }, - clean: { value: function(conn) { - conn.onreceive = noop; - conn.onerror = noop; - if (conn.timeoutId !== undefined) { - global.clearTimeout(conn.timeoutId); - delete conn.timeoutId; - } - } }, - sendNext: { value: function(conn) { - if (this.requests.length > 0) { - var request = this.requests.shift(); - request.push(conn); - this.send.apply(this, request); - } - else { - this.recycle(conn); - } - } }, - send: { value: function(request, future, env, conn) { - var self = this; - var timeout = env.timeout; - if (timeout > 0) { - conn.timeoutId = global.setTimeout(function() { - self.clean(conn); - self.recycle(conn); - future.reject(new TimeoutError('timeout')); - }, timeout); - } - setReceiveHandler(conn, function(data) { - self.clean(conn); - self.sendNext(conn); - future.resolve(data); - }); - conn.onerror = function(e) { - self.clean(conn); - future.reject(e); - }; - - var len = request.length; - var buf = new BytesIO(4 + len); - buf.writeInt32BE(len); - buf.write(request); - conn.send(buf.buffer); - } }, - sendAndReceive: { value: function(request, future, env) { - var conn = this.fetch(); - if (conn) { - this.send(request, future, env, conn); - } - else if (this.size < this.client.maxPoolSize) { - conn = this.create(); - var self = this; - conn.onerror = function(e) { - future.reject(e); - }; - conn.onconnect = function() { - self.send(request, future, env, conn); - }; - } - else { - this.requests.push([request, future, env]); - } - } } - }); - - HalfDuplexTcpTransporter.prototype.constructor = TcpTransporter; - - function TcpClient(uri, functions, settings) { - if (this.constructor !== TcpClient) { - return new TcpClient(uri, functions, settings); - } - Client.call(this, uri, functions, settings); - - var self = this; - var _noDelay = true; - var _fullDuplex = false; - var _maxPoolSize = 10; - var _poolTimeout = 30000; - var fdtrans = null; - var hdtrans = null; - - function getNoDelay() { - return _noDelay; - } - - function setNoDelay(value) { - _noDelay = !!value; - } - - function getFullDuplex() { - return _fullDuplex; - } - - function setFullDuplex(value) { - _fullDuplex = !!value; - } - - function getMaxPoolSize() { - return _maxPoolSize; - } - - function setMaxPoolSize(value) { - if (typeof(value) === 'number') { - _maxPoolSize = value | 0; - if (_maxPoolSize < 1) { - _maxPoolSize = 10; - } - } - else { - _maxPoolSize = 10; - } - } - - function getPoolTimeout() { - return _poolTimeout; - } - - function setPoolTimeout(value) { - if (typeof(value) === 'number') { - _poolTimeout = value | 0; - } - else { - _poolTimeout = 0; - } - } - - function sendAndReceive(request, env) { - var future = new Future(); - if (_fullDuplex) { - if ((fdtrans === null) || (fdtrans.uri !== self.uri)) { - fdtrans = new FullDuplexTcpTransporter(self); - } - fdtrans.sendAndReceive(request, future, env); - } - else { - if ((hdtrans === null) || (hdtrans.uri !== self.uri)) { - hdtrans = new HalfDuplexTcpTransporter(self); - } - hdtrans.sendAndReceive(request, future, env); - } - if (env.oneway) { future.resolve(); } - return future; - } - - Object.defineProperties(this, { - noDelay: { get: getNoDelay, set: setNoDelay }, - fullDuplex: { get: getFullDuplex, set: setFullDuplex }, - maxPoolSize: { get: getMaxPoolSize, set: setMaxPoolSize }, - poolTimeout: { get: getPoolTimeout, set: setPoolTimeout }, - sendAndReceive: { value: sendAndReceive } - }); - } - - function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; - var protocol = parser.protocol; - if (protocol === 'tcp:' || - protocol === 'tcp4:'|| - protocol === 'tcp6:' || - protocol === 'tcps:' || - protocol === 'tcp4s:' || - protocol === 'tcp6s:' || - protocol === 'tls:') { - return; - } - throw new Error('This client desn\'t support ' + protocol + ' scheme.'); - } - - function create(uri, functions, settings) { - if (typeof uri === 'string') { - checkuri(uri); - } - else if (Array.isArray(uri)) { - uri.forEach(function(uri) { checkuri(uri); }); - } - else { - throw new Error('You should set server uri first!'); - } - return new TcpClient(uri, functions, settings); - } - - Object.defineProperty(TcpClient, 'create', { value: create }); - - global.hprose.TcpClient = TcpClient; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * JSONRPCClientFilter.js * - * * - * jsonrpc client filter for JavaScript. * - * * - * LastModified: Feb 23, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -(function (global) { - 'use strict'; - - var Tags = global.hprose.Tags; - var BytesIO = global.hprose.BytesIO; - var Writer = global.hprose.Writer; - var Reader = global.hprose.Reader; - var JSON = global.JSON; - - var s_id = 1; - - function JSONRPCClientFilter(version) { - this.version = version || '2.0'; - } - - JSONRPCClientFilter.prototype.inputFilter = function inputFilter(data/*, context*/) { - var json = BytesIO.toString(data); - if (json.charAt(0) === '{') { - json = '[' + json + ']'; - } - var responses = JSON.parse(json); - var stream = new BytesIO(); - var writer = new Writer(stream, true); - for (var i = 0, n = responses.length; i < n; ++i) { - var response = responses[i]; - if (response.error) { - stream.writeByte(Tags.TagError); - writer.writeString(response.error.message); - } - else { - stream.writeByte(Tags.TagResult); - writer.serialize(response.result); - } - } - stream.writeByte(Tags.TagEnd); - return stream.bytes; - }; - - JSONRPCClientFilter.prototype.outputFilter = function outputFilter(data/*, context*/) { - var requests = []; - var stream = new BytesIO(data); - var reader = new Reader(stream, false, false); - var tag = stream.readByte(); - do { - var request = {}; - if (tag === Tags.TagCall) { - request.method = reader.readString(); - tag = stream.readByte(); - if (tag === Tags.TagList) { - request.params = reader.readListWithoutTag(); - tag = stream.readByte(); - } - if (tag === Tags.TagTrue) { - tag = stream.readByte(); - } - } - if (this.version === '1.1') { - request.version = '1.1'; - } - else if (this.version === '2.0') { - request.jsonrpc = '2.0'; - } - request.id = s_id++; - requests.push(request); - } while (tag === Tags.TagCall); - if (requests.length > 1) { - return JSON.stringify(requests); - } - return JSON.stringify(requests[0]); - }; - - global.hprose.JSONRPCClientFilter = JSONRPCClientFilter; - -})(this); - -/**********************************************************\ -| | -| hprose | -| | -| Official WebSite: http://www.hprose.com/ | -| http://www.hprose.org/ | -| | -\**********************************************************/ - -/**********************************************************\ - * * - * Loader.js * - * * - * hprose CommonJS/AMD/CMD loader for HTML5. * - * * - * LastModified: Mar 2, 2016 * - * Author: Ma Bingyao * - * * -\**********************************************************/ - -/* global define, module */ -(function (global) { - 'use strict'; - - global.hprose.common = { - Completer: global.hprose.Completer, - Future: global.hprose.Future, - ResultMode: global.hprose.ResultMode - }; - - global.hprose.io = { - BytesIO: global.hprose.BytesIO, - ClassManager: global.hprose.ClassManager, - Tags: global.hprose.Tags, - RawReader: global.hprose.RawReader, - Reader: global.hprose.Reader, - Writer: global.hprose.Writer, - Formatter: global.hprose.Formatter - }; - - global.hprose.client = { - Client: global.hprose.Client, - HttpClient: global.hprose.HttpClient, - TcpClient: global.hprose.TcpClient, - WebSocketClient: global.hprose.WebSocketClient - }; - - global.hprose.filter = { - JSONRPCClientFilter: global.hprose.JSONRPCClientFilter - }; - - if (typeof define === 'function') { - if (define.cmd) { - define('hprose', [], global.hprose); - } - else if (define.amd) { - define('hprose', [], function() { return global.hprose; }); - } - } - if (typeof module === 'object' && typeof module.exports === 'object') { - module.exports = global.hprose; - } -})(this); +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;t>n;++n)r[n]=e[n];return r}function i(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t=e.length;if(1e5>t)return String.fromCharCode.apply(String,u(e));for(var r=65535&t,n=t>>16,i=new Array(r?n+1:n),a=0;n>a;++a)i[a]=String.fromCharCode.apply(String,u(e.subarray(a<<16,a+1<<16)));return r&&(i[n]=String.fromCharCode.apply(String,u(e.subarray(n<<16,t)))),i.join("")}function a(e){for(var t=e.length,r=new Uint8Array(t),n=0;t>n;n++)r[n]=255&e.charCodeAt(n);return r}var o=!0;try{String.fromCharCode.apply(String,new Uint8Array([1]))}catch(s){o=!1}var u=o?function(e){return e}:n;e.hprose.generic=r,e.hprose.toBinaryString=i,e.hprose.toUint8Array=a,e.hprose.toArray=n}(this),function(e,t){"use strict";function r(e,t){for(var r=e.prototype,i=0,a=t.length;a>i;i++){var o=t[i],s=r[o];"function"==typeof s&&"undefined"==typeof e[o]&&Object.defineProperty(e,o,{value:n(s)})}}Function.prototype.bind||Object.defineProperty(Function.prototype,"bind",{value:function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),r=this,n=function(){},i=function(){return r.apply(this instanceof n?this:e,t.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),i.prototype=new n,i}}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e){var t=Object(this),r=parseInt(t.length,10)||0;if(0===r)return!1;var n,i=parseInt(arguments[1],10)||0;i>=0?n=i:(n=r+i,0>n&&(n=0));for(var a;r>n;){if(a=t[n],e===a||e!==e&&a!==a)return!0;n++}return!1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return r;return t}}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.findIndex called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return o;return-1}}),Array.prototype.fill||Object.defineProperty(Array.prototype,"fill",{value:function(e){if(null===this||this===t)throw new TypeError("this is null or not defined");for(var r=Object(this),n=r.length>>>0,i=arguments[1],a=i>>0,o=0>a?Math.max(n+a,0):Math.min(a,n),s=arguments[2],u=s===t?n:s>>0,c=0>u?Math.max(n+u,0):Math.min(u,n);c>o;)r[o]=e,o++;return r}}),Array.prototype.copyWithin||Object.defineProperty(Array.prototype,"copyWithin",{value:function(e,r){if(null===this||this===t)throw new TypeError("this is null or not defined");var n=Object(this),i=n.length>>>0,a=e>>0,o=0>a?Math.max(i+a,0):Math.min(a,i),s=r>>0,u=0>s?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=0>f?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-o),g=1;for(o>u&&u+h>o&&(g=-1,u+=h-1,o+=h-1);h>0;)u in n?n[o]=n[u]:delete n[o],u+=g,o+=g,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,a=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var o,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(o=arguments[2])}for(var u,c=a(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;c>l;)u=i[l],s?f[l]="undefined"==typeof o?s(u,l):s.call(o,u,l):f[l]=u,l+=1;return f.length=c,f}}()}),Array.of||Object.defineProperty(Array,"of",{value:function(){return Array.prototype.slice.call(arguments)}}),String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(e,t){return t=t||0,this.substr(t,e.length)===e}}),String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(e,t){var r=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>r.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return-1!==n&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?this.lengthe)throw new RangeError("repeat count must be non-negative");if(e===1/0)throw new RangeError("repeat count must be less than infinity");if(e=Math.floor(e),0===t.length||0===e)return"";if(t.length*e>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var a=[];for(var o in i)e.call(i,o)&&a.push(o);if(t)for(var s=0;n>s;s++)e.call(i,r[s])&&a.push(r[s]);return a}}()});var n=e.hprose.generic;r(Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight","includes","find","findIndex"]),r(String,["quote","substring","toLowerCase","toUpperCase","charAt","charCodeAt","indexOf","lastIndexOf","include","startsWith","endsWith","repeat","trim","trimLeft","trimRight","toLocaleLowerCase","toLocaleUpperCase","match","search","replace","split","substr","concat","slice"])}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,o=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(o(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],u=0,c=s.length;c>u;u++)n.set(s[u][0],s[u][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(o(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var o=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=o.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=o.createElement("iframe");e.style.display="none",o.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=o.documentElement;return function(){var t=a(arguments),r=o.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?o&&"onreadystatechange"in o.createElement("script")?l.setImmediate=u.readyStateChange():o&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():o&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e){return i(e)?e:u(e)}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(r){return s(r)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){a(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function g(){return h(arguments)}function p(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){a(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){a(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){var r=a(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function x(e,t,r){e?R(e,t,r):t.reject(r)}function M(e,t,r,n,a){function o(i){M(e,t,r,n,i)}function s(e){x(t,n,e)}if(i(a))return a===r?void s(new TypeError("Self resolution")):void a.then(o,s);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void s(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,o(e))},function(e){f&&(f=!1,s(e))})}catch(c){f&&(f=!1,s(c))}return}}e?R(e,n,a):n.resolve(a)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:a},join:{value:g},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(this._state===U){this._state=N,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?R(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===N?M(e,t,this,n,this._value):this._state===F?t?R(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:u(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:u(n),n.then(function(){throw r})})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return b(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return _(this,e,t)}},filter:{value:function(e,t){return O(this,e,t)}},map:{value:function(e,t){return S(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var o=r.charCodeAt(i+1);if(56320>a&&o>=56320&&57343>=o){var s=((1023&a)<<10|1023&o)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=o;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&o)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&o)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function o(e,t){for(var r=[],n=new Array(65535),i=0,a=0,o=e.length;t>i&&o>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(o>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(o>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):o(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[g,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return[e.subarray(0,i),i]}function c(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,g=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?g:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return g.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?g:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){o.set(e,t),a[t]=e}function r(e){return o.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),o=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function o(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty); +case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(j.TagPoint),r.writeAsciiString(o)),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(j.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(j.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]])}else r.writeByte(j.TagOpenbrace);r.writeByte(j.TagClosebrace)}function b(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(j.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(j.TagObject),a.writeAsciiString(""+i),a.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(j.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(j.TagClass),n.writeAsciiString(""+t.length),n.writeByte(j.TagQuote),n.writeString(t),n.writeByte(j.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)v(e,r[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var O=e.Map,S=e.hprose.BytesIO,j=e.hprose.Tags,B=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(j.TagRef),this._stream.writeString(""+r),this._stream.writeByte(j.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new O,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){p(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeString:{value:function(e){v(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof O?b(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof O?b(this,e):m(this,e))}},writeObject:{value:function(e){T(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||T(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function p(){Object.defineProperties(this,{ref:{value:[]}})}function v(){return new p}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return x(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return x(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=b(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function q(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r[a]=o}return t.skip(1),r}function H(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return q(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new X;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=F(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function V(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:v()}})}var X=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(p.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),V.prototype=Object.create(g.prototype),V.prototype.constructor=V,Object.defineProperties(V.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return x(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Ve(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function _(e,t){return rt.sendAndReceive(e,t)}function O(e,t,r,n){Ke(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&(++Ce>=ke.length&&(Ce=0),Ae=ke[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},a),!0}return!1}function j(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:xe,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),A(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?He.reject(r):He.resolve(e)};O(g,t,r,He.reject)}function B(e,t){return function(){return ze?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function E(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===v||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function C(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:xe,retry:Me,idempotent:Pe,failswitch:Ue,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function I(e,t,r,n){var i=C(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==y;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case y:i.onerror=f;break;case p:i.byref=f;break;case d:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function R(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Ne?h.promise(function(i,a){Fe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return x(t,r,I(e,t,r,n),n)}function P(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function U(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var p=h.readList();k(p,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(v){o=v}o?i(o):e(a)},i)})}function N(e){return function(){e&&(Ne=!1,o(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Fe),Fe=[])}}function F(e,t,r){r.sync&&(Ne=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){P(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){qe.push({args:t,name:e,context:r,resolve:n,reject:i})})}function L(e){var t={timeout:xe,retry:Me,idempotent:Pe,failswitch:Ue,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function D(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,p=null,v=e[++a].context.mode;if(v>=u.Raw&&(g=new c),h===s.TagResult){if(v===u.Serialized?g=f.readRaw():v>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(v>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();k(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(v>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),p=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=p}}catch(y){return void i(y)}n(e)},i)})}function z(){ze=!0}function q(e){if(e=e||{},ze=!1,Ne)return h.promise(function(t,r){Fe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=qe.length;if(0===t)return h.value([]);var r=L(e);r.sync&&(Ne=!0);var n=qe;qe=[];var i=h.promise(function(e,t){$e(n,r).then(function(t){t.forEach(function(e){if(e.error)P(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&P(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function H(){return Le}function Q(e){typeof e===y&&(Le=e)}function G(){return Ae}function Y(){return Ue}function J(e){Ue=!!e}function $(){return xe}function K(e){xe="number"==typeof e?0|e:0}function V(){return Me}function X(e){Me="number"==typeof e?0|e:0}function Z(){return Pe}function ee(e){Pe=!!e}function te(e){Ye=!!e}function re(){return Ye}function ne(){return Ie}function ie(e){Ie=!!e}function ae(){return Re}function oe(e){Re=!!e}function se(){return We}function ue(e){We=!!e}function ce(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function fe(e){De.length=0,Array.isArray(e)?e.forEach(function(e){le(e)}):le(e)}function le(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function he(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ge(){return De}function pe(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Ae?(e&&(Ae=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),He.resolve(i),i):(o(j,i),He)):new Error("You should set server uri first!")}function ve(e,t,n){var i=arguments.length;if(1>i||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==y&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==y&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return M(rt,e,t,ze)}function de(e,t){return He.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)throw new TypeError("callback must be a function.");r=n}if(typeof r===y)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==y)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=xe);var a=ye(e,r,!0);if(null===a){var o=function(){M(rt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&o()}},callbacks:[n]},Qe[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===y){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function be(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Qe[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){be(e,t,n)});else h.isPromise(r)?r.then(function(t){be(e,t,n)}):me(Qe[e],r,n)}function Te(){return Ge}function _e(){return M(rt,"#",[],!1)}function Oe(e){Xe.push(e),Je=Xe.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},U)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},D)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ee(e){return Oe(e),rt}var Ae,ke=[],Ce=-1,Ie=!1,Re=!1,xe=3e4,Me=10,Pe=!1,Ue=!1,Ne=!1,Fe=[],We=!1,Le=r,De=[],ze=!1,qe=[],He=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=U,$e=D,Ke=T,Ve=_,Xe=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Se(e),nt}}}),it=Object.create(null,{use:{value:function(e){return je(e),it}}}),at=Object.create(null,{use:{value:function(e){return Be(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:H,set:Q},uri:{get:G},id:{get:Te},failswitch:{get:Y,set:J},timeout:{get:$,set:K},retry:{get:V,set:X},idempotent:{get:Z,set:ee},keepAlive:{get:re,set:te},byref:{get:ne,set:ie},simple:{get:ae,set:oe},useHarmonyMap:{get:se,set:ue},filter:{get:ce,set:fe},addFilter:{value:le},removeFilter:{value:he},filters:{get:ge},useService:{value:pe},invoke:{value:ve},ready:{value:de},subscribe:{value:we},unsubscribe:{value:be},use:{value:Ee},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===v?(ke=[n],Ce=0,pe(n,i)):Array.isArray(n)&&(ke=n,Ce=Math.floor(Math.random()*ke.length),pe(ke[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var p="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function l(n,i){var a=new s,o=new XMLHttpRequest;o.open("POST",_.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var u in m)o.setRequestHeader(u,m[u]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?a.resolve(new Uint8Array(o.response)):a.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){a.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=b),o.onprogress=T,i.timeout>0&&(a=a.timeout(i.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),n.constructor===String||ArrayBuffer.isView)o.send(n);else if(n.buffer.slice)o.send(n.buffer.slice(0,n.length));else{var f=new Uint8Array(n.length);f.set(n),o.send(f.buffer)}return a}function h(t,r){var n=new s;return e.api.ajax({url:_.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:m,certificate:_.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?h(t,r):l(t,r);return r.oneway&&i.resolve(),i}function p(e){"function"==typeof e&&(b=e)}function v(){return b}function d(e){"function"==typeof e&&(T=e)}function y(){return T}function w(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?m[e]=t:delete m[e])}if(this.constructor!==n)return new n(i,a,f);o.call(this,i,a,f);var m=Object.create(null),b=r,T=r,_=this;Object.defineProperties(this,{onprogress:{get:v,set:p},onRequestProgress:{get:v,set:p},onResponseProgress:{get:y,set:d},setHeader:{value:w},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,a){function l(){return 2147483647>m?++m:m=0}function h(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function g(e){O.resolve(e)}function p(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),100>b&&_.length>0){++b;var a=_.pop();O.then(function(){h(a[0],a[1]); +})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=g,S.onmessage=p,S.onerror=r,S.onclose=v}function y(e,t){(null===S||S.readyState===f.CLOSING||S.readyState===f.CLOSED)&&d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),100>b?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new o,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var o=e.hprose.Future,s={},u=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=a}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,a=e.atob,o=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:o(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,o=n.dataLength,s=n.id;for(i.write(r);;){if(0>o&&i.length>=a&&(o=i.readInt32BE(),0!==(2147483648&o)&&(o&=2147483647,a=8)),8===a&&null===s&&i.length>=a&&(s=i.readInt32BE()),!(o>=0&&i.length-a>=o))break;t(i.read(o),s),a=4,s=null,i.trunc(),o=-1}n.stream=i,n.headerLength=a,n.dataLength=o,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function o(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,1>b&&(b=10)):b=10}function g(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new p;return m?((null===_||_.uri!==y.uri)&&(_=new a(y)),_.sendAndReceive(e,r,t)):((null===O||O.uri!==y.uri)&&(O=new o(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,p=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var o;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)o=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");o=new l}var s=this;return o.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),o.onclose=function(){--s.size},++this.size,o}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new v("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){o.clean(a),o.recycle(a),r.reject(new v("timeout"))},s)),n(a,function(e){o.clean(a),o.sendNext(a),r.resolve(e)}),a.onerror=function(e){o.clean(a),r.reject(e)};var u=t.length,c=new g(4+u);c.writeInt32BE(u),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizec;++c){var l=a[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),u=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=i.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?o.stringify(t):o.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index cf1d0dd..73fe89f 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 0b613f1..f93751e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -36,7 +36,7 @@ gulp.task('uglify', ['clear'], function() { .pipe(jshint()) .pipe(jshint.reporter()) .pipe(concat('hprose-html5.js')) -// .pipe(uglify()) + .pipe(uglify()) .pipe(gulp.dest('dist')); }); diff --git a/package.json b/package.json index c85019b..5b3f1c3 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.10", - "description": "Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware.", + "version": "2.0.11", + "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ "hprose", diff --git a/src/CopyRight.js b/src/CopyRight.js index 4315524..5b12ce7 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.10 +// Hprose for HTML5 v2.0.11 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From 32c429870786ef13bcc74dbdaf05283ab9a03328 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 26 Jul 2016 11:34:50 +0800 Subject: [PATCH 36/86] Changed failswitch algorithm --- bower.json | 2 +- dist/hprose-html5.js | 8 ++++---- dist/hprose-html5.min.js | 2 +- package.json | 2 +- src/Client.js | 19 ++++++++++++++----- src/CopyRight.js | 2 +- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/bower.json b/bower.json index 94b7c94..3048fdc 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.11", + "version": "2.0.12", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index bc5adea..a2ceab9 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.11 +// Hprose for HTML5 v2.0.12 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;t>n;++n)r[n]=e[n];return r}function i(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t=e.length;if(1e5>t)return String.fromCharCode.apply(String,u(e));for(var r=65535&t,n=t>>16,i=new Array(r?n+1:n),a=0;n>a;++a)i[a]=String.fromCharCode.apply(String,u(e.subarray(a<<16,a+1<<16)));return r&&(i[n]=String.fromCharCode.apply(String,u(e.subarray(n<<16,t)))),i.join("")}function a(e){for(var t=e.length,r=new Uint8Array(t),n=0;t>n;n++)r[n]=255&e.charCodeAt(n);return r}var o=!0;try{String.fromCharCode.apply(String,new Uint8Array([1]))}catch(s){o=!1}var u=o?function(e){return e}:n;e.hprose.generic=r,e.hprose.toBinaryString=i,e.hprose.toUint8Array=a,e.hprose.toArray=n}(this),function(e,t){"use strict";function r(e,t){for(var r=e.prototype,i=0,a=t.length;a>i;i++){var o=t[i],s=r[o];"function"==typeof s&&"undefined"==typeof e[o]&&Object.defineProperty(e,o,{value:n(s)})}}Function.prototype.bind||Object.defineProperty(Function.prototype,"bind",{value:function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),r=this,n=function(){},i=function(){return r.apply(this instanceof n?this:e,t.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),i.prototype=new n,i}}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e){var t=Object(this),r=parseInt(t.length,10)||0;if(0===r)return!1;var n,i=parseInt(arguments[1],10)||0;i>=0?n=i:(n=r+i,0>n&&(n=0));for(var a;r>n;){if(a=t[n],e===a||e!==e&&a!==a)return!0;n++}return!1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return r;return t}}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.findIndex called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return o;return-1}}),Array.prototype.fill||Object.defineProperty(Array.prototype,"fill",{value:function(e){if(null===this||this===t)throw new TypeError("this is null or not defined");for(var r=Object(this),n=r.length>>>0,i=arguments[1],a=i>>0,o=0>a?Math.max(n+a,0):Math.min(a,n),s=arguments[2],u=s===t?n:s>>0,c=0>u?Math.max(n+u,0):Math.min(u,n);c>o;)r[o]=e,o++;return r}}),Array.prototype.copyWithin||Object.defineProperty(Array.prototype,"copyWithin",{value:function(e,r){if(null===this||this===t)throw new TypeError("this is null or not defined");var n=Object(this),i=n.length>>>0,a=e>>0,o=0>a?Math.max(i+a,0):Math.min(a,i),s=r>>0,u=0>s?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=0>f?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-o),g=1;for(o>u&&u+h>o&&(g=-1,u+=h-1,o+=h-1);h>0;)u in n?n[o]=n[u]:delete n[o],u+=g,o+=g,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,a=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var o,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(o=arguments[2])}for(var u,c=a(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;c>l;)u=i[l],s?f[l]="undefined"==typeof o?s(u,l):s.call(o,u,l):f[l]=u,l+=1;return f.length=c,f}}()}),Array.of||Object.defineProperty(Array,"of",{value:function(){return Array.prototype.slice.call(arguments)}}),String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(e,t){return t=t||0,this.substr(t,e.length)===e}}),String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(e,t){var r=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>r.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return-1!==n&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?this.lengthe)throw new RangeError("repeat count must be non-negative");if(e===1/0)throw new RangeError("repeat count must be less than infinity");if(e=Math.floor(e),0===t.length||0===e)return"";if(t.length*e>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var a=[];for(var o in i)e.call(i,o)&&a.push(o);if(t)for(var s=0;n>s;s++)e.call(i,r[s])&&a.push(r[s]);return a}}()});var n=e.hprose.generic;r(Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight","includes","find","findIndex"]),r(String,["quote","substring","toLowerCase","toUpperCase","charAt","charCodeAt","indexOf","lastIndexOf","include","startsWith","endsWith","repeat","trim","trimLeft","trimRight","toLocaleLowerCase","toLocaleUpperCase","match","search","replace","split","substr","concat","slice"])}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,o=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(o(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],u=0,c=s.length;c>u;u++)n.set(s[u][0],s[u][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(o(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var o=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=o.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=o.createElement("iframe");e.style.display="none",o.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=o.documentElement;return function(){var t=a(arguments),r=o.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?o&&"onreadystatechange"in o.createElement("script")?l.setImmediate=u.readyStateChange():o&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():o&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e){return i(e)?e:u(e)}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(r){return s(r)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){a(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function g(){return h(arguments)}function p(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){a(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){a(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){var r=a(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function x(e,t,r){e?R(e,t,r):t.reject(r)}function M(e,t,r,n,a){function o(i){M(e,t,r,n,i)}function s(e){x(t,n,e)}if(i(a))return a===r?void s(new TypeError("Self resolution")):void a.then(o,s);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void s(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,o(e))},function(e){f&&(f=!1,s(e))})}catch(c){f&&(f=!1,s(c))}return}}e?R(e,n,a):n.resolve(a)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:a},join:{value:g},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(this._state===U){this._state=N,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?R(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===N?M(e,t,this,n,this._value):this._state===F?t?R(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:u(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:u(n),n.then(function(){throw r})})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return b(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return _(this,e,t)}},filter:{value:function(e,t){return O(this,e,t)}},map:{value:function(e,t){return S(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var o=r.charCodeAt(i+1);if(56320>a&&o>=56320&&57343>=o){var s=((1023&a)<<10|1023&o)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=o;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&o)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&o)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function o(e,t){for(var r=[],n=new Array(65535),i=0,a=0,o=e.length;t>i&&o>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(o>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(o>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):o(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[g,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return[e.subarray(0,i),i]}function c(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,g=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?g:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return g.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?g:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){o.set(e,t),a[t]=e}function r(e){return o.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),o=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function o(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty); -case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(j.TagPoint),r.writeAsciiString(o)),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(j.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(j.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]])}else r.writeByte(j.TagOpenbrace);r.writeByte(j.TagClosebrace)}function b(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(j.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(j.TagObject),a.writeAsciiString(""+i),a.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(j.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(j.TagClass),n.writeAsciiString(""+t.length),n.writeByte(j.TagQuote),n.writeString(t),n.writeByte(j.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)v(e,r[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var O=e.Map,S=e.hprose.BytesIO,j=e.hprose.Tags,B=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(j.TagRef),this._stream.writeString(""+r),this._stream.writeByte(j.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new O,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){p(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeString:{value:function(e){v(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof O?b(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof O?b(this,e):m(this,e))}},writeObject:{value:function(e){T(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||T(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function p(){Object.defineProperties(this,{ref:{value:[]}})}function v(){return new p}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return x(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return x(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=b(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function q(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r[a]=o}return t.skip(1),r}function H(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return q(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new X;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=F(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function V(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:v()}})}var X=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(p.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),V.prototype=Object.create(g.prototype),V.prototype.constructor=V,Object.defineProperties(V.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return x(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=De.length;n>r;r++)e=De[r].outputFilter(e,t);return e}function b(e,t){for(var r=De.length-1;r>=0;r--)e=De[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Ve(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function _(e,t){return rt.sendAndReceive(e,t)}function O(e,t,r,n){Ke(e,t).then(r,function(i){S(e,t,r,n)||n(i)})}function S(t,r,n,i){if(r.failswitch&&(++Ce>=ke.length&&(Ce=0),Ae=ke[Ce]),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},a),!0}return!1}function j(e){var t={retry:Me,idempotent:!0,failswitch:!0,timeout:xe,client:rt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),A(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?He.reject(r):He.resolve(e)};O(g,t,r,He.reject)}function B(e,t){return function(){return ze?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function E(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===v||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function C(e){return e?{mode:u.Normal,byref:Ie,simple:Re,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}:{mode:u.Normal,byref:Ie,simple:Re,timeout:xe,retry:Me,idempotent:Pe,failswitch:Ue,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:We,client:rt,userdata:{}}}function I(e,t,r,n){var i=C(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==y;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case y:i.onerror=f;break;case p:i.byref=f;break;case d:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function R(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Ne?h.promise(function(i,a){Fe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return x(t,r,I(e,t,r,n),n)}function P(e,t,r,n){try{r.onerror?r.onerror(e,t):Le(e,t),n(t)}catch(i){n(i)}}function U(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var p=h.readList();k(p,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(v){o=v}o?i(o):e(a)},i)})}function N(e){return function(){e&&(Ne=!1,o(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Fe),Fe=[])}}function F(e,t,r){r.sync&&(Ne=!0);var n=h.promise(function(n,i){Je(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){P(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){qe.push({args:t,name:e,context:r,resolve:n,reject:i})})}function L(e){var t={timeout:xe,retry:Me,idempotent:Pe,failswitch:Ue,oneway:!1,sync:!1,client:rt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function D(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,p=null,v=e[++a].context.mode;if(v>=u.Raw&&(g=new c),h===s.TagResult){if(v===u.Serialized?g=f.readRaw():v>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(v>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();k(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(v>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),p=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=p}}catch(y){return void i(y)}n(e)},i)})}function z(){ze=!0}function q(e){if(e=e||{},ze=!1,Ne)return h.promise(function(t,r){Fe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=qe.length;if(0===t)return h.value([]);var r=L(e);r.sync&&(Ne=!0);var n=qe;qe=[];var i=h.promise(function(e,t){$e(n,r).then(function(t){t.forEach(function(e){if(e.error)P(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&P(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function H(){return Le}function Q(e){typeof e===y&&(Le=e)}function G(){return Ae}function Y(){return Ue}function J(e){Ue=!!e}function $(){return xe}function K(e){xe="number"==typeof e?0|e:0}function V(){return Me}function X(e){Me="number"==typeof e?0|e:0}function Z(){return Pe}function ee(e){Pe=!!e}function te(e){Ye=!!e}function re(){return Ye}function ne(){return Ie}function ie(e){Ie=!!e}function ae(){return Re}function oe(e){Re=!!e}function se(){return We}function ue(e){We=!!e}function ce(){return 0===De.length?null:1===De.length?De[0]:De.slice()}function fe(e){De.length=0,Array.isArray(e)?e.forEach(function(e){le(e)}):le(e)}function le(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&De.push(e)}function he(e){var t=De.indexOf(e);return-1===t?!1:(De.splice(t,1),!0)}function ge(){return De}function pe(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=rt;return n&&(i={}),e||Ae?(e&&(Ae=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(A(i,r),He.resolve(i),i):(o(j,i),He)):new Error("You should set server uri first!")}function ve(e,t,n){var i=arguments.length;if(1>i||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==y&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==y&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return M(rt,e,t,ze)}function de(e,t){return He.then(e,t)}function ye(e,t,r){if(Qe[e]){var n=Qe[e];return n[t]?n[t]:null}return r&&(Qe[e]=Object.create(null)),null}function we(e,r,n,i){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)throw new TypeError("callback must be a function.");r=n}if(typeof r===y)return i=n,n=r,null===Ge&&(Ge=_e()),void Ge.then(function(t){we(e,t,n,i)});if(typeof n!==y)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){we(e,t,n,i)});i===t&&(i=xe);var a=ye(e,r,!0);if(null===a){var o=function(){M(rt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=ye(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==ye(e,r,!1)&&o()}},callbacks:[n]},Qe[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function me(e,t,r){if(e)if(typeof r===y){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function be(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Qe[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ge){if(Qe[e]){var i=Qe[e];for(r in i)me(i,r,n)}}else Ge.then(function(t){be(e,t,n)});else h.isPromise(r)?r.then(function(t){be(e,t,n)}):me(Qe[e],r,n)}function Te(){return Ge}function _e(){return M(rt,"#",[],!1)}function Oe(e){Xe.push(e),Je=Xe.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},U)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},D)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ee(e){return Oe(e),rt}var Ae,ke=[],Ce=-1,Ie=!1,Re=!1,xe=3e4,Me=10,Pe=!1,Ue=!1,Ne=!1,Fe=[],We=!1,Le=r,De=[],ze=!1,qe=[],He=new h,Qe=Object.create(null),Ge=null,Ye=!0,Je=U,$e=D,Ke=T,Ve=_,Xe=[],Ze=[],et=[],tt=[],rt=this;_e.sync=!0,_e.idempotent=!0,_e.failswitch=!0;var nt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Se(e),nt}}}),it=Object.create(null,{use:{value:function(e){return je(e),it}}}),at=Object.create(null,{use:{value:function(e){return Be(e),at}}});Object.defineProperties(this,{"#":{value:_e},onerror:{get:H,set:Q},uri:{get:G},id:{get:Te},failswitch:{get:Y,set:J},timeout:{get:$,set:K},retry:{get:V,set:X},idempotent:{get:Z,set:ee},keepAlive:{get:re,set:te},byref:{get:ne,set:ie},simple:{get:ae,set:oe},useHarmonyMap:{get:se,set:ue},filter:{get:ce,set:fe},addFilter:{value:le},removeFilter:{value:he},filters:{get:ge},useService:{value:pe},invoke:{value:ve},ready:{value:de},subscribe:{value:we},unsubscribe:{value:be},use:{value:Ee},batch:{value:nt},beforeFilter:{value:it},afterFilter:{value:at}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(rt[e]=a[e])}),typeof n===v?(ke=[n],Ce=0,pe(n,i)):Array.isArray(n)&&(ke=n,Ce=Math.floor(Math.random()*ke.length),pe(ke[Ce],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var p="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function l(n,i){var a=new s,o=new XMLHttpRequest;o.open("POST",_.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var u in m)o.setRequestHeader(u,m[u]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?a.resolve(new Uint8Array(o.response)):a.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){a.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=b),o.onprogress=T,i.timeout>0&&(a=a.timeout(i.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),n.constructor===String||ArrayBuffer.isView)o.send(n);else if(n.buffer.slice)o.send(n.buffer.slice(0,n.length));else{var f=new Uint8Array(n.length);f.set(n),o.send(f.buffer)}return a}function h(t,r){var n=new s;return e.api.ajax({url:_.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:m,certificate:_.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?h(t,r):l(t,r);return r.oneway&&i.resolve(),i}function p(e){"function"==typeof e&&(b=e)}function v(){return b}function d(e){"function"==typeof e&&(T=e)}function y(){return T}function w(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?m[e]=t:delete m[e])}if(this.constructor!==n)return new n(i,a,f);o.call(this,i,a,f);var m=Object.create(null),b=r,T=r,_=this;Object.defineProperties(this,{onprogress:{get:v,set:p},onRequestProgress:{get:v,set:p},onResponseProgress:{get:y,set:d},setHeader:{value:w},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,a){function l(){return 2147483647>m?++m:m=0}function h(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function g(e){O.resolve(e)}function p(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),100>b&&_.length>0){++b;var a=_.pop();O.then(function(){h(a[0],a[1]); -})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=g,S.onmessage=p,S.onerror=r,S.onclose=v}function y(e,t){(null===S||S.readyState===f.CLOSING||S.readyState===f.CLOSED)&&d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),100>b?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new o,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var o=e.hprose.Future,s={},u=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=a}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,a=e.atob,o=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:o(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,o=n.dataLength,s=n.id;for(i.write(r);;){if(0>o&&i.length>=a&&(o=i.readInt32BE(),0!==(2147483648&o)&&(o&=2147483647,a=8)),8===a&&null===s&&i.length>=a&&(s=i.readInt32BE()),!(o>=0&&i.length-a>=o))break;t(i.read(o),s),a=4,s=null,i.trunc(),o=-1}n.stream=i,n.headerLength=a,n.dataLength=o,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function o(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,1>b&&(b=10)):b=10}function g(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new p;return m?((null===_||_.uri!==y.uri)&&(_=new a(y)),_.sendAndReceive(e,r,t)):((null===O||O.uri!==y.uri)&&(O=new o(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,p=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var o;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)o=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");o=new l}var s=this;return o.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),o.onclose=function(){--s.size},++this.size,o}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new v("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){o.clean(a),o.recycle(a),r.reject(new v("timeout"))},s)),n(a,function(e){o.clean(a),o.sendNext(a),r.resolve(e)}),a.onerror=function(e){o.clean(a),r.reject(e)};var u=t.length,c=new g(4+u);c.writeInt32BE(u),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizec;++c){var l=a[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),u=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=i.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?o.stringify(t):o.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;t>n;++n)r[n]=e[n];return r}function i(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t=e.length;if(1e5>t)return String.fromCharCode.apply(String,u(e));for(var r=65535&t,n=t>>16,i=new Array(r?n+1:n),a=0;n>a;++a)i[a]=String.fromCharCode.apply(String,u(e.subarray(a<<16,a+1<<16)));return r&&(i[n]=String.fromCharCode.apply(String,u(e.subarray(n<<16,t)))),i.join("")}function a(e){for(var t=e.length,r=new Uint8Array(t),n=0;t>n;n++)r[n]=255&e.charCodeAt(n);return r}var o=!0;try{String.fromCharCode.apply(String,new Uint8Array([1]))}catch(s){o=!1}var u=o?function(e){return e}:n;e.hprose.generic=r,e.hprose.toBinaryString=i,e.hprose.toUint8Array=a,e.hprose.toArray=n}(this),function(e,t){"use strict";function r(e,t){for(var r=e.prototype,i=0,a=t.length;a>i;i++){var o=t[i],s=r[o];"function"==typeof s&&"undefined"==typeof e[o]&&Object.defineProperty(e,o,{value:n(s)})}}Function.prototype.bind||Object.defineProperty(Function.prototype,"bind",{value:function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),r=this,n=function(){},i=function(){return r.apply(this instanceof n?this:e,t.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),i.prototype=new n,i}}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e){var t=Object(this),r=parseInt(t.length,10)||0;if(0===r)return!1;var n,i=parseInt(arguments[1],10)||0;i>=0?n=i:(n=r+i,0>n&&(n=0));for(var a;r>n;){if(a=t[n],e===a||e!==e&&a!==a)return!0;n++}return!1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return r;return t}}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.findIndex called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return o;return-1}}),Array.prototype.fill||Object.defineProperty(Array.prototype,"fill",{value:function(e){if(null===this||this===t)throw new TypeError("this is null or not defined");for(var r=Object(this),n=r.length>>>0,i=arguments[1],a=i>>0,o=0>a?Math.max(n+a,0):Math.min(a,n),s=arguments[2],u=s===t?n:s>>0,c=0>u?Math.max(n+u,0):Math.min(u,n);c>o;)r[o]=e,o++;return r}}),Array.prototype.copyWithin||Object.defineProperty(Array.prototype,"copyWithin",{value:function(e,r){if(null===this||this===t)throw new TypeError("this is null or not defined");var n=Object(this),i=n.length>>>0,a=e>>0,o=0>a?Math.max(i+a,0):Math.min(a,i),s=r>>0,u=0>s?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=0>f?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-o),g=1;for(o>u&&u+h>o&&(g=-1,u+=h-1,o+=h-1);h>0;)u in n?n[o]=n[u]:delete n[o],u+=g,o+=g,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,a=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var o,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(o=arguments[2])}for(var u,c=a(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;c>l;)u=i[l],s?f[l]="undefined"==typeof o?s(u,l):s.call(o,u,l):f[l]=u,l+=1;return f.length=c,f}}()}),Array.of||Object.defineProperty(Array,"of",{value:function(){return Array.prototype.slice.call(arguments)}}),String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(e,t){return t=t||0,this.substr(t,e.length)===e}}),String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(e,t){var r=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>r.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return-1!==n&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?this.lengthe)throw new RangeError("repeat count must be non-negative");if(e===1/0)throw new RangeError("repeat count must be less than infinity");if(e=Math.floor(e),0===t.length||0===e)return"";if(t.length*e>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var a=[];for(var o in i)e.call(i,o)&&a.push(o);if(t)for(var s=0;n>s;s++)e.call(i,r[s])&&a.push(r[s]);return a}}()});var n=e.hprose.generic;r(Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight","includes","find","findIndex"]),r(String,["quote","substring","toLowerCase","toUpperCase","charAt","charCodeAt","indexOf","lastIndexOf","include","startsWith","endsWith","repeat","trim","trimLeft","trimRight","toLocaleLowerCase","toLocaleUpperCase","match","search","replace","split","substr","concat","slice"])}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,o=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(o(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],u=0,c=s.length;c>u;u++)n.set(s[u][0],s[u][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(o(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var o=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=o.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=o.createElement("iframe");e.style.display="none",o.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=o.documentElement;return function(){var t=a(arguments),r=o.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?o&&"onreadystatechange"in o.createElement("script")?l.setImmediate=u.readyStateChange():o&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():o&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e){return i(e)?e:u(e)}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(r){return s(r)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){a(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function g(){return h(arguments)}function p(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){a(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){a(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){var r=a(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function M(e,t,r){e?R(e,t,r):t.reject(r)}function x(e,t,r,n,a){function o(i){x(e,t,r,n,i)}function s(e){M(t,n,e)}if(i(a))return a===r?void s(new TypeError("Self resolution")):void a.then(o,s);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void s(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,o(e))},function(e){f&&(f=!1,s(e))})}catch(c){f&&(f=!1,s(c))}return}}e?R(e,n,a):n.resolve(a)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:a},join:{value:g},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(this._state===U){this._state=N,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?R(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===N?x(e,t,this,n,this._value):this._state===F?t?R(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:u(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:u(n),n.then(function(){throw r})})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return b(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return _(this,e,t)}},filter:{value:function(e,t){return O(this,e,t)}},map:{value:function(e,t){return S(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var o=r.charCodeAt(i+1);if(56320>a&&o>=56320&&57343>=o){var s=((1023&a)<<10|1023&o)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=o;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&o)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&o)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function o(e,t){for(var r=[],n=new Array(65535),i=0,a=0,o=e.length;t>i&&o>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(o>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(o>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):o(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[g,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return[e.subarray(0,i),i]}function c(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,g=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?g:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return g.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?g:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){o.set(e,t),a[t]=e}function r(e){return o.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),o=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function o(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty); +case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(j.TagPoint),r.writeAsciiString(o)),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(j.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(j.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]])}else r.writeByte(j.TagOpenbrace);r.writeByte(j.TagClosebrace)}function b(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(j.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(j.TagObject),a.writeAsciiString(""+i),a.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(j.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(j.TagClass),n.writeAsciiString(""+t.length),n.writeByte(j.TagQuote),n.writeString(t),n.writeByte(j.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)v(e,r[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var O=e.Map,S=e.hprose.BytesIO,j=e.hprose.Tags,B=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(j.TagRef),this._stream.writeString(""+r),this._stream.writeByte(j.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new O,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){p(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeString:{value:function(e){v(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof O?b(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof O?b(this,e):m(this,e))}},writeObject:{value:function(e){T(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||T(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function p(){Object.defineProperties(this,{ref:{value:[]}})}function v(){return new p}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=b(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function q(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r[a]=o}return t.skip(1),r}function H(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return q(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new X;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=F(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function V(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:v()}})}var X=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(p.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),V.prototype=Object.create(g.prototype),V.prototype.constructor=V,Object.defineProperties(V.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=ze.length;n>r;r++)e=ze[r].outputFilter(e,t);return e}function b(e,t){for(var r=ze.length-1;r>=0;r--)e=ze[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function _(e,t){return nt.sendAndReceive(e,t)}function O(e,t,r,n){Ve(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Ce.length;if(e>1){var t=Ie+Math.floor(Math.random()*(e-1))+1;t>=e&&(t%=e),Ie=t,ke=Ce[Ie]}}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},a),!0}return!1}function B(e){var t={retry:Pe,idempotent:!0,failswitch:!0,timeout:xe,client:nt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),k(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?Qe.reject(r):Qe.resolve(e)};O(g,t,r,Qe.reject)}function E(e,t){return function(){return qe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===v||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Re,simple:Me,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}:{mode:u.Normal,byref:Re,simple:Me,timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==y;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case y:i.onerror=f;break;case p:i.byref=f;break;case d:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function M(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Fe?h.promise(function(i,a){We.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):De(e,t),n(t)}catch(i){n(i)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var p=h.readList();C(p,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(v){o=v}o?i(o):e(a)},i)})}function F(e){return function(){e&&(Fe=!1,o(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},We),We=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){$e(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,client:nt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,p=null,v=e[++a].context.mode;if(v>=u.Raw&&(g=new c),h===s.TagResult){if(v===u.Serialized?g=f.readRaw():v>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(v>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(v>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),p=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=p}}catch(y){return void i(y)}n(e)},i)})}function q(){qe=!0}function H(e){if(e=e||{},qe=!1,Fe)return h.promise(function(t,r){We.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return De}function G(e){typeof e===y&&(De=e)}function Y(){return ke}function J(){return Ne}function $(e){Ne=!!e}function K(){return xe}function V(e){xe="number"==typeof e?0|e:0}function X(){return Pe}function Z(e){Pe="number"==typeof e?0|e:0}function ee(){return Ue}function te(e){Ue=!!e}function re(e){Je=!!e}function ne(){return Je}function ie(){return Re}function ae(e){Re=!!e}function oe(){return Me}function se(e){Me=!!e}function ue(){return Le}function ce(e){Le=!!e}function fe(){return 0===ze.length?null:1===ze.length?ze[0]:ze.slice()}function le(e){ze.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&ze.push(e)}function ge(e){var t=ze.indexOf(e);return-1===t?!1:(ze.splice(t,1),!0)}function pe(){return ze}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=nt;return n&&(i={}),e||ke?(e&&(ke=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Qe.resolve(i),i):(o(B,i),Qe)):new Error("You should set server uri first!")}function de(e,t,n){var i=arguments.length;if(1>i||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==y&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==y&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return P(nt,e,t,qe)}function ye(e,t){return Qe.then(e,t)}function we(e,t,r){if(Ge[e]){var n=Ge[e];return n[t]?n[t]:null}return r&&(Ge[e]=Object.create(null)),null}function me(e,r,n,i){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)throw new TypeError("callback must be a function.");r=n}if(typeof r===y)return i=n,n=r,null===Ye&&(Ye=Oe()),void Ye.then(function(t){me(e,t,n,i)});if(typeof n!==y)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){me(e,t,n,i)});i===t&&(i=xe);var a=we(e,r,!0);if(null===a){var o=function(){P(nt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=we(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==we(e,r,!1)&&o()}},callbacks:[n]},Ge[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function be(e,t,r){if(e)if(typeof r===y){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ge[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ye){if(Ge[e]){var i=Ge[e];for(r in i)be(i,r,n)}}else Ye.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):be(Ge[e],r,n)}function _e(){return Ye}function Oe(){return P(nt,"#",[],!1)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Ee(e){rt.push(e),Xe=rt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ae(e){return Se(e),nt}var ke,Ce=[],Ie=-1,Re=!1,Me=!1,xe=3e4,Pe=10,Ue=!1,Ne=!1,Fe=!1,We=[],Le=!1,De=r,ze=[],qe=!1,He=[],Qe=new h,Ge=Object.create(null),Ye=null,Je=!0,$e=N,Ke=z,Ve=T,Xe=_,Ze=[],et=[],tt=[],rt=[],nt=this;Oe.sync=!0,Oe.idempotent=!0,Oe.failswitch=!0;var it=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return je(e),it}}}),at=Object.create(null,{use:{value:function(e){return Be(e),at}}}),ot=Object.create(null,{use:{value:function(e){return Ee(e),ot}}});Object.defineProperties(this,{"#":{value:Oe},onerror:{get:Q,set:G},uri:{get:Y},id:{get:_e},failswitch:{get:J,set:$},timeout:{get:K,set:V},retry:{get:X,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:oe,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},filters:{get:pe},useService:{value:ve},invoke:{value:de},ready:{value:ye},subscribe:{value:me},unsubscribe:{value:Te},use:{value:Ae},batch:{value:it},beforeFilter:{value:at},afterFilter:{value:ot}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(nt[e]=a[e])}),typeof n===v?(Ce=[n],Ie=0,ve(n,i)):Array.isArray(n)&&(Ce=n,Ie=Math.floor(Math.random()*Ce.length),ve(Ce[Ie],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var p="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function l(n,i){var a=new s,o=new XMLHttpRequest;o.open("POST",_.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var u in m)o.setRequestHeader(u,m[u]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?a.resolve(new Uint8Array(o.response)):a.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){a.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=b),o.onprogress=T,i.timeout>0&&(a=a.timeout(i.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),n.constructor===String||ArrayBuffer.isView)o.send(n);else if(n.buffer.slice)o.send(n.buffer.slice(0,n.length));else{var f=new Uint8Array(n.length);f.set(n),o.send(f.buffer)}return a}function h(t,r){var n=new s;return e.api.ajax({url:_.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:m,certificate:_.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?h(t,r):l(t,r);return r.oneway&&i.resolve(),i}function p(e){"function"==typeof e&&(b=e)}function v(){return b}function d(e){"function"==typeof e&&(T=e)}function y(){return T}function w(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?m[e]=t:delete m[e])}if(this.constructor!==n)return new n(i,a,f);o.call(this,i,a,f);var m=Object.create(null),b=r,T=r,_=this;Object.defineProperties(this,{onprogress:{get:v,set:p},onRequestProgress:{get:v,set:p},onResponseProgress:{get:y,set:d},setHeader:{value:w},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,a){function l(){return 2147483647>m?++m:m=0}function h(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function g(e){O.resolve(e)}function p(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))), +100>b&&_.length>0){++b;var a=_.pop();O.then(function(){h(a[0],a[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=g,S.onmessage=p,S.onerror=r,S.onclose=v}function y(e,t){(null===S||S.readyState===f.CLOSING||S.readyState===f.CLOSED)&&d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),100>b?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new o,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var o=e.hprose.Future,s={},u=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=a}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,a=e.atob,o=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:o(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,o=n.dataLength,s=n.id;for(i.write(r);;){if(0>o&&i.length>=a&&(o=i.readInt32BE(),0!==(2147483648&o)&&(o&=2147483647,a=8)),8===a&&null===s&&i.length>=a&&(s=i.readInt32BE()),!(o>=0&&i.length-a>=o))break;t(i.read(o),s),a=4,s=null,i.trunc(),o=-1}n.stream=i,n.headerLength=a,n.dataLength=o,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function o(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,1>b&&(b=10)):b=10}function g(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new p;return m?((null===_||_.uri!==y.uri)&&(_=new a(y)),_.sendAndReceive(e,r,t)):((null===O||O.uri!==y.uri)&&(O=new o(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,p=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var o;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)o=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");o=new l}var s=this;return o.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),o.onclose=function(){--s.size},++this.size,o}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new v("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){o.clean(a),o.recycle(a),r.reject(new v("timeout"))},s)),n(a,function(e){o.clean(a),o.sendNext(a),r.resolve(e)}),a.onerror=function(e){o.clean(a),r.reject(e)};var u=t.length,c=new g(4+u);c.writeInt32BE(u),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizec;++c){var l=a[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),u=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=i.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?o.stringify(t):o.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 73fe89f..496684b 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/package.json b/package.json index 5b3f1c3..b359760 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.11", + "version": "2.0.12", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/Client.js b/src/Client.js index 57aaa5a..19da22e 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Jul 4, 2016 * + * LastModified: Jul 26, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -108,13 +108,22 @@ }); } - function retry(data, context, onsuccess, onerror) { - if (context.failswitch) { - if (++_index >= _uris.length) { - _index = 0; + function failswitch() { + var n = _uris.length; + if (n > 1) { + var i = _index + Math.floor(Math.random() * (n - 1)) + 1; + if (i >= n) { + i %= n; } + _index = i; _uri = _uris[_index]; } + } + + function retry(data, context, onsuccess, onerror) { + if (context.failswitch) { + failswitch(); + } if (context.idempotent) { if (--context.retry >= 0) { var interval = (context.retry >= 10) ? 500 : (10 - context.retry) * 500; diff --git a/src/CopyRight.js b/src/CopyRight.js index 5b12ce7..b9bbb3c 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.11 +// Hprose for HTML5 v2.0.12 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From 8d25db9ec2713e0cbb225f6a9972cfd0f60f047b Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 26 Jul 2016 12:21:00 +0800 Subject: [PATCH 37/86] Update corsSupport check. --- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- src/HttpClient.js | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index a2ceab9..9ee5b9e 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -5,5 +5,5 @@ // https://github.com/hprose/hprose-html5 function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;t>n;++n)r[n]=e[n];return r}function i(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t=e.length;if(1e5>t)return String.fromCharCode.apply(String,u(e));for(var r=65535&t,n=t>>16,i=new Array(r?n+1:n),a=0;n>a;++a)i[a]=String.fromCharCode.apply(String,u(e.subarray(a<<16,a+1<<16)));return r&&(i[n]=String.fromCharCode.apply(String,u(e.subarray(n<<16,t)))),i.join("")}function a(e){for(var t=e.length,r=new Uint8Array(t),n=0;t>n;n++)r[n]=255&e.charCodeAt(n);return r}var o=!0;try{String.fromCharCode.apply(String,new Uint8Array([1]))}catch(s){o=!1}var u=o?function(e){return e}:n;e.hprose.generic=r,e.hprose.toBinaryString=i,e.hprose.toUint8Array=a,e.hprose.toArray=n}(this),function(e,t){"use strict";function r(e,t){for(var r=e.prototype,i=0,a=t.length;a>i;i++){var o=t[i],s=r[o];"function"==typeof s&&"undefined"==typeof e[o]&&Object.defineProperty(e,o,{value:n(s)})}}Function.prototype.bind||Object.defineProperty(Function.prototype,"bind",{value:function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),r=this,n=function(){},i=function(){return r.apply(this instanceof n?this:e,t.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),i.prototype=new n,i}}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e){var t=Object(this),r=parseInt(t.length,10)||0;if(0===r)return!1;var n,i=parseInt(arguments[1],10)||0;i>=0?n=i:(n=r+i,0>n&&(n=0));for(var a;r>n;){if(a=t[n],e===a||e!==e&&a!==a)return!0;n++}return!1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return r;return t}}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.findIndex called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return o;return-1}}),Array.prototype.fill||Object.defineProperty(Array.prototype,"fill",{value:function(e){if(null===this||this===t)throw new TypeError("this is null or not defined");for(var r=Object(this),n=r.length>>>0,i=arguments[1],a=i>>0,o=0>a?Math.max(n+a,0):Math.min(a,n),s=arguments[2],u=s===t?n:s>>0,c=0>u?Math.max(n+u,0):Math.min(u,n);c>o;)r[o]=e,o++;return r}}),Array.prototype.copyWithin||Object.defineProperty(Array.prototype,"copyWithin",{value:function(e,r){if(null===this||this===t)throw new TypeError("this is null or not defined");var n=Object(this),i=n.length>>>0,a=e>>0,o=0>a?Math.max(i+a,0):Math.min(a,i),s=r>>0,u=0>s?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=0>f?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-o),g=1;for(o>u&&u+h>o&&(g=-1,u+=h-1,o+=h-1);h>0;)u in n?n[o]=n[u]:delete n[o],u+=g,o+=g,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,a=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var o,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(o=arguments[2])}for(var u,c=a(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;c>l;)u=i[l],s?f[l]="undefined"==typeof o?s(u,l):s.call(o,u,l):f[l]=u,l+=1;return f.length=c,f}}()}),Array.of||Object.defineProperty(Array,"of",{value:function(){return Array.prototype.slice.call(arguments)}}),String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(e,t){return t=t||0,this.substr(t,e.length)===e}}),String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(e,t){var r=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>r.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return-1!==n&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?this.lengthe)throw new RangeError("repeat count must be non-negative");if(e===1/0)throw new RangeError("repeat count must be less than infinity");if(e=Math.floor(e),0===t.length||0===e)return"";if(t.length*e>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var a=[];for(var o in i)e.call(i,o)&&a.push(o);if(t)for(var s=0;n>s;s++)e.call(i,r[s])&&a.push(r[s]);return a}}()});var n=e.hprose.generic;r(Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight","includes","find","findIndex"]),r(String,["quote","substring","toLowerCase","toUpperCase","charAt","charCodeAt","indexOf","lastIndexOf","include","startsWith","endsWith","repeat","trim","trimLeft","trimRight","toLocaleLowerCase","toLocaleUpperCase","match","search","replace","split","substr","concat","slice"])}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,o=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(o(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],u=0,c=s.length;c>u;u++)n.set(s[u][0],s[u][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(o(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var o=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=o.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=o.createElement("iframe");e.style.display="none",o.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=o.documentElement;return function(){var t=a(arguments),r=o.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?o&&"onreadystatechange"in o.createElement("script")?l.setImmediate=u.readyStateChange():o&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():o&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e){return i(e)?e:u(e)}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(r){return s(r)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){a(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function g(){return h(arguments)}function p(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){a(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){a(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){var r=a(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function M(e,t,r){e?R(e,t,r):t.reject(r)}function x(e,t,r,n,a){function o(i){x(e,t,r,n,i)}function s(e){M(t,n,e)}if(i(a))return a===r?void s(new TypeError("Self resolution")):void a.then(o,s);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void s(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,o(e))},function(e){f&&(f=!1,s(e))})}catch(c){f&&(f=!1,s(c))}return}}e?R(e,n,a):n.resolve(a)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:a},join:{value:g},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(this._state===U){this._state=N,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?R(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===N?x(e,t,this,n,this._value):this._state===F?t?R(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:u(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:u(n),n.then(function(){throw r})})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return b(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return _(this,e,t)}},filter:{value:function(e,t){return O(this,e,t)}},map:{value:function(e,t){return S(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var o=r.charCodeAt(i+1);if(56320>a&&o>=56320&&57343>=o){var s=((1023&a)<<10|1023&o)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=o;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&o)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&o)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function o(e,t){for(var r=[],n=new Array(65535),i=0,a=0,o=e.length;t>i&&o>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(o>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(o>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):o(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[g,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return[e.subarray(0,i),i]}function c(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,g=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?g:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return g.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?g:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){o.set(e,t),a[t]=e}function r(e){return o.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),o=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function o(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty); -case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(j.TagPoint),r.writeAsciiString(o)),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(j.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(j.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]])}else r.writeByte(j.TagOpenbrace);r.writeByte(j.TagClosebrace)}function b(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(j.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(j.TagObject),a.writeAsciiString(""+i),a.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(j.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(j.TagClass),n.writeAsciiString(""+t.length),n.writeByte(j.TagQuote),n.writeString(t),n.writeByte(j.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)v(e,r[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var O=e.Map,S=e.hprose.BytesIO,j=e.hprose.Tags,B=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(j.TagRef),this._stream.writeString(""+r),this._stream.writeByte(j.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new O,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){p(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeString:{value:function(e){v(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof O?b(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof O?b(this,e):m(this,e))}},writeObject:{value:function(e){T(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||T(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function p(){Object.defineProperties(this,{ref:{value:[]}})}function v(){return new p}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=b(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function q(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r[a]=o}return t.skip(1),r}function H(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return q(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new X;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=F(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function V(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:v()}})}var X=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(p.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),V.prototype=Object.create(g.prototype),V.prototype.constructor=V,Object.defineProperties(V.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=ze.length;n>r;r++)e=ze[r].outputFilter(e,t);return e}function b(e,t){for(var r=ze.length-1;r>=0;r--)e=ze[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function _(e,t){return nt.sendAndReceive(e,t)}function O(e,t,r,n){Ve(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Ce.length;if(e>1){var t=Ie+Math.floor(Math.random()*(e-1))+1;t>=e&&(t%=e),Ie=t,ke=Ce[Ie]}}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},a),!0}return!1}function B(e){var t={retry:Pe,idempotent:!0,failswitch:!0,timeout:xe,client:nt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),k(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?Qe.reject(r):Qe.resolve(e)};O(g,t,r,Qe.reject)}function E(e,t){return function(){return qe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===v||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Re,simple:Me,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}:{mode:u.Normal,byref:Re,simple:Me,timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==y;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case y:i.onerror=f;break;case p:i.byref=f;break;case d:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function M(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Fe?h.promise(function(i,a){We.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):De(e,t),n(t)}catch(i){n(i)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var p=h.readList();C(p,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(v){o=v}o?i(o):e(a)},i)})}function F(e){return function(){e&&(Fe=!1,o(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},We),We=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){$e(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,client:nt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,p=null,v=e[++a].context.mode;if(v>=u.Raw&&(g=new c),h===s.TagResult){if(v===u.Serialized?g=f.readRaw():v>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(v>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(v>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),p=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=p}}catch(y){return void i(y)}n(e)},i)})}function q(){qe=!0}function H(e){if(e=e||{},qe=!1,Fe)return h.promise(function(t,r){We.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return De}function G(e){typeof e===y&&(De=e)}function Y(){return ke}function J(){return Ne}function $(e){Ne=!!e}function K(){return xe}function V(e){xe="number"==typeof e?0|e:0}function X(){return Pe}function Z(e){Pe="number"==typeof e?0|e:0}function ee(){return Ue}function te(e){Ue=!!e}function re(e){Je=!!e}function ne(){return Je}function ie(){return Re}function ae(e){Re=!!e}function oe(){return Me}function se(e){Me=!!e}function ue(){return Le}function ce(e){Le=!!e}function fe(){return 0===ze.length?null:1===ze.length?ze[0]:ze.slice()}function le(e){ze.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&ze.push(e)}function ge(e){var t=ze.indexOf(e);return-1===t?!1:(ze.splice(t,1),!0)}function pe(){return ze}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=nt;return n&&(i={}),e||ke?(e&&(ke=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Qe.resolve(i),i):(o(B,i),Qe)):new Error("You should set server uri first!")}function de(e,t,n){var i=arguments.length;if(1>i||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==y&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==y&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return P(nt,e,t,qe)}function ye(e,t){return Qe.then(e,t)}function we(e,t,r){if(Ge[e]){var n=Ge[e];return n[t]?n[t]:null}return r&&(Ge[e]=Object.create(null)),null}function me(e,r,n,i){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)throw new TypeError("callback must be a function.");r=n}if(typeof r===y)return i=n,n=r,null===Ye&&(Ye=Oe()),void Ye.then(function(t){me(e,t,n,i)});if(typeof n!==y)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){me(e,t,n,i)});i===t&&(i=xe);var a=we(e,r,!0);if(null===a){var o=function(){P(nt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=we(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==we(e,r,!1)&&o()}},callbacks:[n]},Ge[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function be(e,t,r){if(e)if(typeof r===y){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ge[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ye){if(Ge[e]){var i=Ge[e];for(r in i)be(i,r,n)}}else Ye.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):be(Ge[e],r,n)}function _e(){return Ye}function Oe(){return P(nt,"#",[],!1)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Ee(e){rt.push(e),Xe=rt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ae(e){return Se(e),nt}var ke,Ce=[],Ie=-1,Re=!1,Me=!1,xe=3e4,Pe=10,Ue=!1,Ne=!1,Fe=!1,We=[],Le=!1,De=r,ze=[],qe=!1,He=[],Qe=new h,Ge=Object.create(null),Ye=null,Je=!0,$e=N,Ke=z,Ve=T,Xe=_,Ze=[],et=[],tt=[],rt=[],nt=this;Oe.sync=!0,Oe.idempotent=!0,Oe.failswitch=!0;var it=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return je(e),it}}}),at=Object.create(null,{use:{value:function(e){return Be(e),at}}}),ot=Object.create(null,{use:{value:function(e){return Ee(e),ot}}});Object.defineProperties(this,{"#":{value:Oe},onerror:{get:Q,set:G},uri:{get:Y},id:{get:_e},failswitch:{get:J,set:$},timeout:{get:K,set:V},retry:{get:X,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:oe,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},filters:{get:pe},useService:{value:ve},invoke:{value:de},ready:{value:ye},subscribe:{value:me},unsubscribe:{value:Te},use:{value:Ae},batch:{value:it},beforeFilter:{value:at},afterFilter:{value:ot}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(nt[e]=a[e])}),typeof n===v?(Ce=[n],Ie=0,ve(n,i)):Array.isArray(n)&&(Ce=n,Ie=Math.floor(Math.random()*Ce.length),ve(Ce[Ie],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var p="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function l(n,i){var a=new s,o=new XMLHttpRequest;o.open("POST",_.uri,!0),e.location!==t&&"file:"!==e.location.protocol&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var u in m)o.setRequestHeader(u,m[u]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?a.resolve(new Uint8Array(o.response)):a.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){a.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=b),o.onprogress=T,i.timeout>0&&(a=a.timeout(i.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),n.constructor===String||ArrayBuffer.isView)o.send(n);else if(n.buffer.slice)o.send(n.buffer.slice(0,n.length));else{var f=new Uint8Array(n.length);f.set(n),o.send(f.buffer)}return a}function h(t,r){var n=new s;return e.api.ajax({url:_.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:m,certificate:_.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?h(t,r):l(t,r);return r.oneway&&i.resolve(),i}function p(e){"function"==typeof e&&(b=e)}function v(){return b}function d(e){"function"==typeof e&&(T=e)}function y(){return T}function w(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?m[e]=t:delete m[e])}if(this.constructor!==n)return new n(i,a,f);o.call(this,i,a,f);var m=Object.create(null),b=r,T=r,_=this;Object.defineProperties(this,{onprogress:{get:v,set:p},onRequestProgress:{get:v,set:p},onResponseProgress:{get:y,set:d},setHeader:{value:w},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,a){function l(){return 2147483647>m?++m:m=0}function h(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function g(e){O.resolve(e)}function p(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))), -100>b&&_.length>0){++b;var a=_.pop();O.then(function(){h(a[0],a[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=g,S.onmessage=p,S.onerror=r,S.onclose=v}function y(e,t){(null===S||S.readyState===f.CLOSING||S.readyState===f.CLOSED)&&d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),100>b?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new o,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var o=e.hprose.Future,s={},u=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=a}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,a=e.atob,o=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:o(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,o=n.dataLength,s=n.id;for(i.write(r);;){if(0>o&&i.length>=a&&(o=i.readInt32BE(),0!==(2147483648&o)&&(o&=2147483647,a=8)),8===a&&null===s&&i.length>=a&&(s=i.readInt32BE()),!(o>=0&&i.length-a>=o))break;t(i.read(o),s),a=4,s=null,i.trunc(),o=-1}n.stream=i,n.headerLength=a,n.dataLength=o,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function o(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,1>b&&(b=10)):b=10}function g(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new p;return m?((null===_||_.uri!==y.uri)&&(_=new a(y)),_.sendAndReceive(e,r,t)):((null===O||O.uri!==y.uri)&&(O=new o(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,p=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var o;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)o=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");o=new l}var s=this;return o.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),o.onclose=function(){--s.size},++this.size,o}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new v("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){o.clean(a),o.recycle(a),r.reject(new v("timeout"))},s)),n(a,function(e){o.clean(a),o.sendNext(a),r.resolve(e)}),a.onerror=function(e){o.clean(a),r.reject(e)};var u=t.length,c=new g(4+u);c.writeInt32BE(u),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizec;++c){var l=a[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),u=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=i.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?o.stringify(t):o.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(j.TagPoint),r.writeAsciiString(o)),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(j.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(j.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]])}else r.writeByte(j.TagOpenbrace);r.writeByte(j.TagClosebrace)}function b(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(j.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(j.TagObject),a.writeAsciiString(""+i),a.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(j.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(j.TagClass),n.writeAsciiString(""+t.length),n.writeByte(j.TagQuote),n.writeString(t),n.writeByte(j.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)v(e,r[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var O=e.Map,S=e.hprose.BytesIO,j=e.hprose.Tags,B=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(j.TagRef),this._stream.writeString(""+r),this._stream.writeByte(j.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new O,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){p(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeString:{value:function(e){v(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof O?b(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof O?b(this,e):m(this,e))}},writeObject:{value:function(e){T(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||T(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function p(){Object.defineProperties(this,{ref:{value:[]}})}function v(){return new p}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=b(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function q(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r[a]=o}return t.skip(1),r}function H(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return q(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new X;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=F(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function V(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:v()}})}var X=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(p.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),V.prototype=Object.create(g.prototype),V.prototype.constructor=V,Object.defineProperties(V.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=ze.length;n>r;r++)e=ze[r].outputFilter(e,t);return e}function b(e,t){for(var r=ze.length-1;r>=0;r--)e=ze[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function _(e,t){return nt.sendAndReceive(e,t)}function O(e,t,r,n){Ve(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Ce.length;if(e>1){var t=Ie+Math.floor(Math.random()*(e-1))+1;t>=e&&(t%=e),Ie=t,ke=Ce[Ie]}}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},a),!0}return!1}function B(e){var t={retry:Pe,idempotent:!0,failswitch:!0,timeout:xe,client:nt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),k(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?Qe.reject(r):Qe.resolve(e)};O(g,t,r,Qe.reject)}function E(e,t){return function(){return qe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===v||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Re,simple:Me,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}:{mode:u.Normal,byref:Re,simple:Me,timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==y;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case y:i.onerror=f;break;case p:i.byref=f;break;case d:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function M(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Fe?h.promise(function(i,a){We.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):De(e,t),n(t)}catch(i){n(i)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var p=h.readList();C(p,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(v){o=v}o?i(o):e(a)},i)})}function F(e){return function(){e&&(Fe=!1,o(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},We),We=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){$e(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,client:nt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,p=null,v=e[++a].context.mode;if(v>=u.Raw&&(g=new c),h===s.TagResult){if(v===u.Serialized?g=f.readRaw():v>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(v>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(v>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),p=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=p}}catch(y){return void i(y)}n(e)},i)})}function q(){qe=!0}function H(e){if(e=e||{},qe=!1,Fe)return h.promise(function(t,r){We.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return De}function G(e){typeof e===y&&(De=e)}function Y(){return ke}function J(){return Ne}function $(e){Ne=!!e}function K(){return xe}function V(e){xe="number"==typeof e?0|e:0}function X(){return Pe}function Z(e){Pe="number"==typeof e?0|e:0}function ee(){return Ue}function te(e){Ue=!!e}function re(e){Je=!!e}function ne(){return Je}function ie(){return Re}function ae(e){Re=!!e}function oe(){return Me}function se(e){Me=!!e}function ue(){return Le}function ce(e){Le=!!e}function fe(){return 0===ze.length?null:1===ze.length?ze[0]:ze.slice()}function le(e){ze.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&ze.push(e)}function ge(e){var t=ze.indexOf(e);return-1===t?!1:(ze.splice(t,1),!0)}function pe(){return ze}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=nt;return n&&(i={}),e||ke?(e&&(ke=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Qe.resolve(i),i):(o(B,i),Qe)):new Error("You should set server uri first!")}function de(e,t,n){var i=arguments.length;if(1>i||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==y&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==y&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return P(nt,e,t,qe)}function ye(e,t){return Qe.then(e,t)}function we(e,t,r){if(Ge[e]){var n=Ge[e];return n[t]?n[t]:null}return r&&(Ge[e]=Object.create(null)),null}function me(e,r,n,i){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)throw new TypeError("callback must be a function.");r=n}if(typeof r===y)return i=n,n=r,null===Ye&&(Ye=Oe()),void Ye.then(function(t){me(e,t,n,i)});if(typeof n!==y)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){me(e,t,n,i)});i===t&&(i=xe);var a=we(e,r,!0);if(null===a){var o=function(){P(nt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=we(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==we(e,r,!1)&&o()}},callbacks:[n]},Ge[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function be(e,t,r){if(e)if(typeof r===y){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ge[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ye){if(Ge[e]){var i=Ge[e];for(r in i)be(i,r,n)}}else Ye.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):be(Ge[e],r,n)}function _e(){return Ye}function Oe(){return P(nt,"#",[],!1)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Ee(e){rt.push(e),Xe=rt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ae(e){return Se(e),nt}var ke,Ce=[],Ie=-1,Re=!1,Me=!1,xe=3e4,Pe=10,Ue=!1,Ne=!1,Fe=!1,We=[],Le=!1,De=r,ze=[],qe=!1,He=[],Qe=new h,Ge=Object.create(null),Ye=null,Je=!0,$e=N,Ke=z,Ve=T,Xe=_,Ze=[],et=[],tt=[],rt=[],nt=this;Oe.sync=!0,Oe.idempotent=!0,Oe.failswitch=!0;var it=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return je(e),it}}}),at=Object.create(null,{use:{value:function(e){return Be(e),at}}}),ot=Object.create(null,{use:{value:function(e){return Ee(e),ot}}});Object.defineProperties(this,{"#":{value:Oe},onerror:{get:Q,set:G},uri:{get:Y},id:{get:_e},failswitch:{get:J,set:$},timeout:{get:K,set:V},retry:{get:X,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:oe,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},filters:{get:pe},useService:{value:ve},invoke:{value:de},ready:{value:ye},subscribe:{value:me},unsubscribe:{value:Te},use:{value:Ae},batch:{value:it},beforeFilter:{value:at},afterFilter:{value:ot}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(nt[e]=a[e])}),typeof n===v?(Ce=[n],Ie=0,ve(n,i)):Array.isArray(n)&&(Ce=n,Ie=Math.floor(Math.random()*Ce.length),ve(Ce[Ie],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var p="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function h(e,n){var i=new s,a=new XMLHttpRequest;a.open("POST",O.uri,!0),l&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var o in b)a.setRequestHeader(o,b[o]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=T),a.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw a.onload=r,a.onerror=r,a.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),a.send(u.buffer)}return i}function g(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function p(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?g(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,a,f);o.call(this,i,a,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:p}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,a){function l(){return 2147483647>m?++m:m=0}function h(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function g(e){O.resolve(e)}function p(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n]; +if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),100>b&&_.length>0){++b;var a=_.pop();O.then(function(){h(a[0],a[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=g,S.onmessage=p,S.onerror=r,S.onclose=v}function y(e,t){(null===S||S.readyState===f.CLOSING||S.readyState===f.CLOSED)&&d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),100>b?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new o,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var o=e.hprose.Future,s={},u=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=a}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,a=e.atob,o=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:o(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,o=n.dataLength,s=n.id;for(i.write(r);;){if(0>o&&i.length>=a&&(o=i.readInt32BE(),0!==(2147483648&o)&&(o&=2147483647,a=8)),8===a&&null===s&&i.length>=a&&(s=i.readInt32BE()),!(o>=0&&i.length-a>=o))break;t(i.read(o),s),a=4,s=null,i.trunc(),o=-1}n.stream=i,n.headerLength=a,n.dataLength=o,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function o(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,1>b&&(b=10)):b=10}function g(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new p;return m?((null===_||_.uri!==y.uri)&&(_=new a(y)),_.sendAndReceive(e,r,t)):((null===O||O.uri!==y.uri)&&(O=new o(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,p=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var o;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)o=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");o=new l}var s=this;return o.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),o.onclose=function(){--s.size},++this.size,o}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new v("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){o.clean(a),o.recycle(a),r.reject(new v("timeout"))},s)),n(a,function(e){o.clean(a),o.sendNext(a),r.resolve(e)}),a.onerror=function(e){o.clean(a),r.reject(e)};var u=t.length,c=new g(4+u);c.writeInt32BE(u),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizec;++c){var l=a[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),u=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=i.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?o.stringify(t):o.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 496684b..eb8a927 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQAZKwEAAAAAAAAzHUn/qWH7EwabADPIOSfRKQfDP5PS/WIum7zHAeJQvA4d9n4POLH6lJgsLP5QlqVDZXChzavjIbyDu+IMZRgJjRkeO7Zf+8FbLd/v4y5knW31OfmeQj7s0YoUOMF6krkyS4BiP7mSKlmmHj541GqWqc+Kb6Vt+wR1/8GSKawin+FUylpP8v7CNFC+mDCtquMLzoSNxAkOHP/4mmPp77dqirceSUVPIf0ggsoJZDB4+Dl5morcA8cLy/qU5f148oavP7/XjHa1i22+EluYFyicNIgRQzuD3nwT7zy8xGTKLs+uiTvELtoRXwr66IFFrGdM1zC3N5pBfn5hezIzb/pEfjIdVoxGPEu40IGq6wjauB4XLrugqViT7Aaug/t2+6qa+/cUyNAx/V29ekVk4nzCOMH4rsjUc2IIA/bkdg0zFEAw3DBm26WLSozP3XjEmJ8fF/lo1xpLSw0O7nqXa3wtFVVeQd8Kz9Ljo4DCxPUjeWO1zKUq4YunmIq2XWOdNP3CSqyBX+gyHjj5Si22ai9JgyybhzWgBTmiwYDanb7zfUJS72tpR6w9YjBhG8AEmVxsmvGZA91fedDem9R7lh0AthmkCRLZmN+TwkxDp+3n1nc6pORs6D8nE9agu4S8cEKuy+4NLon2ILxITh2okTyizqsdbMF1/3961ckiO08AuWzRCvsz0G7FaBq87SShind2hscMbGw6swIYmFhuWi8y28sLJqYPegRjbuom8Oi3X7wduCqZkBECvTHACWA1NwLhCH05OOaoHP77aUJgwnN50380bQNasQUKi1rnG+8qRaYuCvWX+l3L5X2wAhe2CG3ak0MhAHA9Y3dBVo/ySryHnd69QIJx5XIDhIKYjzBlpC2yOMqmvJ7al3SnsQrySZQaTPQSa59tMz1Jt0fzEOiL7E+rKfA08qut/PARqJ+cT/r9VEceau/KP5HjwbHrnTWLRj9/kbbTaG7/i/KRqgV380B7ELbBgaRNBn//rJGN2bJjAHLcMrX81NQLnbxBgvXAgXKvcLhQCDR0eyeetU+vUWdE18B7KoOWDbf8NOStYLghdb+TjjHtrKWuFzRAlZoRPfOMCsEx+UMH1BykqPRSpFBPSpCWV61W/fo873+bOp5Su1qOyjYz7k3zWiSdFgojOiM6QLkjmUqDvW8ar4r9mf3ffwOZzKAKGL99jk24XzZyWG/4YMTw3ebYgi/I2Kp+kBTcB8DhyV/y4liQt7KFlvLHVbzn2nm4itvMPGP3FblbfQfdd1jn0KKQ1XYuiFwcxukn2ugOzWrZgASzhWdq6shAlQRkVr62IZIpxKEc8VgKOUkUVVx5hxsVtjWV1KMIYl0/eG75vPM3ipqmitXRPLVCCtAWX1NdXH4NpHfNCUdgsEQaGPqnPKl4KI1XS0W/DhgruoZvks9MQfJECTNO3Ix7PwY7Mmx3C1xtTbMfYMAov9LUUbHQ55NEuC/3W3ZRD0mRmreVd2KuEbNrVPgLcoiFwjSR+dyWxfilKY9NHIv0umpc+a/kctiLKeCEO7iSEgB/m78E8fxlKi5xdkVPGmHdEXdsNYfQv8pixWvrX3D13hjAEAf2pQBadtwRcKIK3sZEk0YxGMG8w4ejHnnlnLAeBsgsil30y+fGo9F7B/hKZYBgltEJhsERh52uFi3J0kQ9yddbUPblUnMU6EP/NbDshYHM2JMsApLQHCagHMyrsmeoaVqxqZFAuP5fH/Y3/zKj6E9QaS3u3UFpkG/d8nXhF1iOVQpB38lgQD/5C3oimzkggJA4BTmxZ9fDCTmFwtFkxXxJowq8vCAL+icGIQl3gekp7FbUnGvrlLSz63WjFgB7trtUjs0THypGCIi1idGgwX51IGIN61Oqh2DDWCnvFx9QXWwpwMZagjU6xm/zoqGzCdEW8hwi4/E6o6iIFFBkX/Wtqb9y1+HKHBpI71Q+NvUATA8cJEnvo82wx22ZlDia1VvlQVz2QN2o0x87prpNawYAkeJDrFQorZ58rWNxHiRDjDSi0e4nrIv8UXM1farwrQUrHnZJtwnAm1jeqIuzKyyrAAAqVPOoPtaiwTeIhZ0ncLsLccGBKPf72/BMHO77Fb3sordbMCOFVrWGGVXJp05XvoJjoCB8kmi01327YCojStpY/bN7OlJLAsKXLxddLfVfjNk01p8hS9ccrrep5cxFjMlkkIyk6F7jCuhwgPuyGoJ0gpj3UzN02zZPVZoU4brh6mfimNL4L+dbAFkGo4foFE1M2dXuM6tQOQcuzfg6GUtfcRlxNpRGrW9lUQw2V3AguBQG+XKND8GffEjXp2I8ABaXzZgypV8GIIS2yjKmNsn3fbbsVqkcV1PUfwkT2KnYw+sOXLws00TCHkdIZUJoTimpcTNDsxWClmFeHZw3FuiiFUc6hHX4Na4e2hvrSPlVaC0xi8/Wiv4rksdnOIQNJhxvND8x/I2reCexR7JeihaI48GWSsrFsW9khukiycljfUwWMTzQuHLq0OzwqRxJq3rsNBQHzo0iz/m03XKImd3+Z5TcTHLdFpRhWgEX/gDzXgaqoAJnSvikTRhugt6005YuN+EzRM90wZo3lGTGOh3xn/YQazjb6/wdwqlZ1eyrNKO4inbHLMS7IB9QfW7yVvJoDTAHgbn+iZWu7IU/nF8wlM1e852FD0dASPxsRm2fpwTbb1YBXdD/w8THtCPrY0nX7/1kO+nqkYrLuf+LjGIRUmvLehc+53p29cinW9P8DUP/mVwHHP1Xh1wXfi9/ETVKDNSktEdjI8oyEz/4bdvkM7SGdEfQnv4+B2IWrZUAIbRmSVOqRN/9jJ1yDPIRbgzj3j5oBjCSaJ6XjdSKIFvgtMVSTLx0CjNjAhD33ExSkhnl8wim7GtrjKdsY2fTMQTLuMLF8ZoqLB7CQhB683p0oGMNp3RFt4wqGulMtCxeAW5Ks/MCvsJLQKzH/s3cPhIAP7TM/u3edrfiSXx1UZQpxUUpLuZ+pYi+H21PeNBJW0TyLCPu9X/QM6pmfYdEaVHKdmdjmZ5iBQifOFqnQOevZOu7AHI8Hh+aCoR7ZoebNi0H+9GPjUbZYwZOH1uA1DmgnOK+8Dlwaaq1b1Xg5wlilc9d+m0BivKohhC5CIZcMV0KkpAv+BUAOpyM/taYDdoU0Js1Mm4CvuSF03y75BcsOshwAwO3NX2KnNOm6ECCB9g3/1deayz+ayec2DFE49CplWKaIhNbrJ2JxJIRVFRcav4GHjkzmiXPea+T8uOQoYY/6cVaLp6M7vWpnjVkE752PmfN9RzO1Ni/ycXmsOYoU+AF7+AScKD3D9Us8lRyu/7XXbjdBmfUISviFnywZ0K3sl8IUh4vx9JsqDQwKnPh8geAmXAidddC6zF2kzOTPpAM+cZIrQlWKOlaMeSrWq9uPiRQpxjVMIkdNFpvSKEokhUf7VYVZQKW3LFQE2BONr61DaLNRqvtTnEhbhBiOhkTso/WcFaKMTyPvleKv0OZK5BOaHvGGGNY98hocdg05gna9UI906X8+BdAQvF1SuyhTVGigpGilR6P32FeUkZ6uaBvN6H5jbPLamlPqIo/GpC2WJDnzZwGfRluQMOy2rFlSTFASPwRm8nDbMqCE/F/+uFf2nSVJuSg+kjQF/mZy/v8QXQpBNX60lBhNZnNWTvzo0XV++1m8QD589kzUVr3c8neFbQXPNMjK5bDlsjlw9gA0sKKJmy0fcS9WOiU49ivZGQb7nrpXfaPJvWTMT7aj16eQJ1Q0BXSvAFGDHkeXerDNJssu/xYzF+ANPTOIZ1f1EAnbUStRKR1zqy/oWPHQ9/m2vakVpJLRj6WZfUiw+7MkMH3Ci7OY8AWuTnzp7q3M3/fU2vKs2PBtX3ZmdKb4HlO/JfKr4TvKZZPDNRtrE4/Mqh/Thl7lfJzV/lORWydp7PLvDYfKJN8dTDOd3Zj4GsV3Xg2Qgt0hpDUDm+U2YbTyiSL69Q91pKb1bc8UywPb73js2hMEoiBr1puScLLzWPwgfgjIb0t0OsIyvKPzfT9H7LaLF5/Ee3Utby4UlHx83j1oVCFO78KZ7xMqTrNHA16lL7lnmznbHm5OEWF/y8Xkgd2IJUFmuhriDEOFnEHgd+IusVk75EXy10F2VJ1dYtUk5k2cAlt1nxh3vG74GIHFPKp5oYWZq3YAOFFDPr2H2aY+d3GDweSUJaBgKdmW5P1Qe6ohkZKPM+IhbQuhcrQ843cfNb2swulc+1cpTXtwdtzk/l+llfReBy6+0rX9bC+bFXF2O5aeDMAzp5bjEi7h9b+dQQLNGh2zN5A4Rqrxz6tOBNB23vbQBKFatsINhi8YxzllLpg6Esfs/0+bTeFf9+QjQ1QPn6tBD4aLWUmsvqipTHQBow8hfYpXz00nHiLub9SvyecpqPwoOPyiSTqO2ljyEymWdKj0H4+90hmJfk6sBC7wNasenO3KCVS4LHzrJR5WT7xlMmUBC6IgoyZyR80htVtbuemtlFYc1nyv3MnyKGZe76d8XWqwwX4hmGwn98sumosIzMvnFhw1HbZHrY8rRjWjNp9x3AK+VG96ujdS6dLqUt7EcQWpQpWNmSusJ/x+3JR7z73/LmrdnORfLpg77UPof4WbkbPupmNLC9eYAgcmeHXBZjpbWoMofX/gBRO3vCG/3bHUSxZUAyQMIl7lqp2rI4JkFFE3G44im0Q1mjgmpLVFT2O4B0UAFXilzT3jcsx8nwgXIOoC4IhvhnkKm3dGJnjL0U6FeY6gMWe6HxrXJpwj/DBxsRqFrfKWFBu/BfBAsbh2uA1DmWJ4cwxaR/XpL1VFiCWO9rFz7vGyqQ1WNrMvtAbHSMI9reCUFcPRD4IVEjQbBlPSd38vkTl0dzJDr82d2sCWDBWLXR4f0QR6iqfE0BijPu57BFl6CIjJK/lhM10WI1uqdkTM4x5pgiev5FnjFeCIcnJ2sXESFOH21Rir/w86SMnUb13N19d4NlDW8Q6L9Ay4gIBpOOGvAxjuJQ4Sg56weYqCMwxRPpYpKwP7HQxYMfFxT3G/8l0IaFLNpmP0MhFLhJcwHOqB6joUp+xXsIADspIF8mx5qCqdOeA48vRMH4o57nRdB7XPwSM6RjI5qUtEScj7VmUbZStOlcztCraWnXOVS1FTzxnme9pbIPeeBxzv/SRqdi+3V/f2qxPeqUv5XZ7uXeq+/WCUbuxORgLZM0Fg0GRPtIHLU2IZNXDmvctNBzukqdA+EcmY9lDT0thxg7gA5WDgzPzgGinAux1CrQgU7kS8///fIC46hw6KUnWqU0mwxwqwxCllR6ERaIvPMC3ayONMusfeNm3OrbBqZubwdbY+/VsF9jGG+62zyjFgK8aQmj3s8cZOUfupxZ5pVaT7FuUp3owrPIxgtRGzaFsCQ/FSc/e0lM70v2hwiSpO4aiArrNTuWpfFqvvwtMZKy1NpJ97lHT3aOfv2QxdLC8esbqRPOrv5qSfSujI/OGh7gNkKVfVoglNDsp5p4ofIzMkufPk6NdOznc8xSPuJT8vHhRp4+NZ9dVM03jC+hzIWwau1yxzdzqop2y7T04WklLG7rUcdfMRMqyYtD2pZKm5oQ08bVksvtczQDnwmyU1PZw94SF8Jz+BuRPbEgBV4V3FuXfIwXDa+3jKCuER0wRgoYWUpW+TuUjyqVrUs67GKjSw+nz8dFEOjzzSiC1Xfy4MyRqvzXEMPHT+dI/Renm6XazkNXtopRDKOUr/V6DKJ8lqINZjx3Q3hz+Sg1VGdhO5zGcTABQBYg7cGY5ZyRF/JaSbiTxWIU+inNnjhRU0Fpvw4/ID+cypgW6z7M1D15e5T5Tkp7lPH7zedsSXSJrscET4rWPcXZXz1eYCrexgktdIbJC6IP/UpKocNPaInhUWC24p6Oyx/MROEi7OBdhVNOwuza/lLpVyiXKKiFD5P2/eBWk+1AnraWg4rDJwsX0KC1eco7aoV8K95jScA6omiRG1o+fP/JwbHh/7XjnxmKAPAgD99Hjtr1yaooR2WOHghzlm+4PkgclSCZZLxw8qbvgt3ZqcNVQO+uIxKg6SX17fmLXwCvhSByB6tSoFXuld6rQkIHONwuYoUkfTwl6E+CL5iAQHF0lrEl8KIpwm3iqYmghpJI5Lb9YpszZxFMqvwOEchRf9MYlOY9cbxSNh2AkOxeC7ATJY6uqCYRgpkPRBUAYDKZCtW3k6fxgSm1/yznx5zR33m0pkpbeIO/ne1F5PdzBG6Z2uhNQHKmc0GPsB6ad8YXbQDHTUyD0P1LR/gDHXbd9lx6oFHszfQvgcgW0BDfJQr00rg0TfdISzMT7s6IVE+GW5Unhtz7DGnHxE7LUPd6J0VEtAa37vTA6FypTp3iZx+MH5urKIhZfJ0RvDNX6rn8jNzk7TkklLmJapsXUU8ek/NfPBrkp+U7eqBWfJ7aE54g8+dpzcRgiGsQ1K9gFdfT+z9VlR8cYSwCk9BkLf/CkcBbshJzeAc8Wlru/i6XLz61BN9bbJ55nzrM5ITSCZuMjMJPQnzKggJDqYIZBbpNG5jnWkvTmcvjduILaeXgIB9SbGp3PWV3SH4Wj4GzfwuFHgfFan4Qzu4npkpm8iXlhS/GJcVd8E3M1U9AvPHtj+stfs32iq7EemjyxLeWbULQyNEc1PSH26XwUF3XKMkA4ngXuzDx6tD+vN/Y2VUB8+LjVReF7IBK3f3jL0XgGoE7t1QNl0uVHj063AvU57nAI5DZaSS/DvCq5uJiXSKx0/d0icfODXKv15erzvK7omMzYgMB455LISgSSJluDzjN3Y7KZMYMIzguZvLI73/hOjzkBT1cc1bhY8Z3HustvO63+cf1ndzAvz/KKcrK4A+dPmOEr3eShCC07fdDqi8QFYm7n970c8RiP+QIkveusByCpvbzigqZokPDjwoavduFLqsZ4F+RkcxpGCXuDP6WkvNf0wbpi5/iw5zS6TwRHwwpYcFJ+LWtod90HIiRcJACgEXXXx+0utt8PIL82rAxUJFGqEb+ebhy5OvafyWze8F35DskeoxJ8Rs19n05/fWJE30XPcOanRyhh35zHiWu5FhIOPGEJaC34Njb+FcKemUggRM0sFGmqmhWbE027NIAv0qt7hXR+wMHul2O8ZFFP1WRwbGye8WJ7n2S6avB1xLve30PuINfB1VOuVQqankLg73dV01gzlwgxWl1y8Nlv04gLD2qhfwuhVg+WMezsZ031zoeZ14tL32cTMhLcwqo4cYQqOC5qPkeO/457QrNgvvckZEUtu7sYZY9S5BIXv/A4S+wwdms9i/SPzhDm7ZixCjiuLqoEB0IJ1EtQ/qXwL1mPgmJeXFg/pyykRLz0oZ4BZxeTW43n4MpdIJ6SNmKTArqgjqq8bu/QgpDczpHYAAfNImLqNeBO0hQp4iymAoy1DFki2zZZiUXwBJ69xdcuGexdQhd54VbxenaY/cwLhQueHsmWD0hxu1ctjIfOABGzh+zarSKj70QOLX4bE2mhJ17Zl/4PGjo/+M08aHClQUbYuDKa0Y3a99oDXmi54gzyfyH0c9IXgH326s6Eg7Wp18nZAB05iNWoccWpYvHow5eTITS7UDMs7iE6nHIKkpufVr5fpeicNkfJFkplzwZzl67mPRyGoB5q2LE4f2L8/CjCtqEL6LIEsjxI4c2wYuvh4L3R+CSg5lkR6Fl2ahZtzxCO9MPZ4Aki/9Blozm7kQ0HIbAyuBqiT/+gGsFUzrWafe29LZtXw4X7PcpCfr6Tz1y83dyR7Hw1syyFisZjkuLkqGPlaqZ9Xe5Tuvzq6LqvGWVi6BlbrU/ZyT68KgkobjD4Y2gtkiWQZMlevoWMPwxIVQXlHEn8aME4MC1aTGS5JWib2VAXy18BOK12U0+ZBQy4e6AYC+zjOXAx6Htdp6RQ+/uvsOGTburvze0yZXLFVjQpyLxzLEObraup3YkEIx0+Ri61pFnrks5ZHHyHUDlTByGQOtAgXE9w8Bj7mZb4SMyIc3mn0xWmIhNfSMqZkaeSXeaOAzNSkpEQZ9s4aQ3EcW8CguA+8WGoB18RTHfWy2rzuDdAiSylEXNhmdTIZ3lBwdpQcrSCSjloSfPNRfOThQz4/Gy6Gu2xA24DwH+xwh9DOoQeQwKZr7NBNIiFdti+3lqiBCHmqC+71fYYphzB+xuDiBHAvZTKTE1mev9FhVtNRfgsPxaJQR+h6ey2IWu30gqeGYTljYFtHggqdgTIzJ3xWhtqHnBuTqCLiwuE3pnCwFMDpxPXN7Itno0E9gLlLsoUTpw0/sdAWMDUMVFZndq9bhjj8HB3KGfTYGVEhL23esbbWdujcTg47tp8CNWdO7ds9/6Ll9Qr3Ao3BWxKLsiiULOwZ2xP+qj4I/3Y5UFrLv35KuLvfV7QBZPrJT58QcVuWIuVbXJ0Bvr9pP2Hybj5f6vM7sfMGiLys5bwyzuvCEe6ZhuOinl+FcLTYrdat8T3drjkCjcZ9sTxY1MIQD6tOY3/U2LSTtzZzLsodyq6qXUiFvv8vB9bQSGJb7i+7FyZqmQVJ78jCVe9eyLf3C3zYbJogbW5lyUbGW2SYCrZ/CxAHrJShVXrEWf/n3tyxsqkVxYC+0ID+tGifH5fWWYR1ghyk1nIPW+ixqbf0+ZmZRpRzxZBqVlJ3BTcpTDVjcan66FhhF1m5KptttRqEZbFUc+O6YsntFZ/sQWXZ2BYkReVUT8iEtgBbXHGo9iRJ07LWZE1D8BsxPzF+lmu+UjpNMMS2EswTb71Z/0Cf+S9hJ+ynRq0kVi8gr14LIEQytD76/DzLznpJ0keLd/4pOa76gz4mfhN/q3p2NgxLCKmJMyA2uoJITrSa8fhVyXD++UE06q98Rart2rHq7NDdWTOn2pkh4t+rccb5KRRsgOn4n2kwd0hFi5uu751IaNyPeJdedQRayD37gHE6ilY8fbcykYZtpDEsH9cr23LbeH3fRntqN7A7H2ifuddZHKIgFiJBcXf4Mp7hyoxCyG+zHlbvbvWFLHTJGvHGUZLK3OoNP7v1JjwZ/TDbSpvTvWRXgRdyrbbFuIftoYkR2pmiKr0er1M+WRA7qhqAPrSXQtKGhOvmRoZjiCEQCvWkQsqXH4ceumw5RiR0oBDXAqGt5xzFjFvHo7fAI9H2nv/B9rWxc5ePcdDIuZwQJhtfvWtPqjGYfxhBoSppnA8nk38ezl31NEWF3G6E9xhf4hm7qBJk6NMust99odOpBBJ+1EpfAkqShp+RCsRLBn4Vo4D5qhYHUVJmnlLlTOnQ2jGNVJ4to1wlUmR5LZW0Eqmu8NzPPGaorvxaDgmWyfn0ELzv9oZ7DP6r1x0Tq2D9IYlDm9KhTOTc02xPHsQUVG8AiscxnVeCZ2QQ6+mO7bUrRMTiitte2lK0JoXZ12QTSbNVKHnpkwnbnreTQwomoJoJzYgvZ7HKeHxgrQFCbxZPjgPDN24yuFhOWLXz8QtdauxAxq/RvG3Xj3lvb3IyzcsSlfBA3yH3Tvp22DGO+jmbB5hq3cIQ4hKbkPi6DvlusYmWYabP/ZzmUzgT9SVm/zbi5oicqJnqgClj6MLjlql5LN7+ifSTnoiCqTKeuYC+BBXC2QC2mPcXsApwekCtPMWm8qqYjQ4FQNYFzYoDZXw93S3qaEvraRPEFliR8AnK6D6RggWju+BL04Di1L/IWEKBg4Z2UbAdRjF0zErtbcuw+4UJVjfJMBbfwOFNx+V6Z/r2kzfFdlKooKZvdrkOENEay1Hx4++7FwraCmeAb+FvMSx1IZt9y3NpVFIe1xs5C6xHnm+PwUAlK4sIocNuMrwTe9rPJBHXVLg/8zfwMW+mmPN9FMOh1ImUJfU+BCpjTPAp2CCDkRi6X+Bw4sH3LBDaFVO5b0dWGOKgBzmS7LporMorIWsMMfH6oYM0xxEdvvwBs0zIrRPMrFE/KZvDh9YnlbWNiM8rv9pcyNS1DmHwlT6PIslxd9HutrWtuM3F3zmJnhHrNus4wF+3c55jek+U+ZqihzW3Iv/3jBgGvv8Vt1xKSPe88mkmeZPi82B50xCGFvW3v1mT676BkbB9qJsEILn8PSJqY/Y5fzL7YCxZrr4cmt6F3g8ceNnWG7ga42OR1p++TOD/X5LIkAYDrQNjWW/gxLKraqn23/0EPtEdwrr8SzClmdvSZFWqvy/+YPFnITUEZQfkagqBvd0/V2tg8zMF9ZQVyyKJT30/Q4ZgRRpBjRoopQaQd+ODn5/8TylF1u44uO5vjkKRbVhyB+dsU93Ggx/tM5hFKmnwVA/DdXxbibYMkf5wY+2wHYqW79aAaF6aQXa3VGr0+KtjOx4lOfVxrxabDBWJdG+hZNkn16dn6vmqkkel4zo0ZdkFPrihvGimEcXkHVS5rfW4ZHiy5TbQ7XfGfvG0pFk3Pqn1jc27TZ+N4meMZbFpA532k4M400VlA88JaT2kZNlBhzCQ92pDGvbkjDrBvMVfItAxPW9VPs5rlDoP7eOKLsEdckJ6rz9oCwgS3m5v8xuNopk8EOe2c00TdmZmoXmBnvw7J44eZm6QDYh94eXHbGO7XmeE75oZSkqJYPiYKDBImI/icE5+ai3EzbU/fhTGDh9vmOgImYHtUImrw9FsjSVTJovGPnYlLtUe+vgmAG4B41Ix2Y6IIgNApcb8walI8xv0/eYLz9o6WOU2N/4xxYWvw8hxUU5ctryuFlOrPgRfrMZHCeH/XPmi3aPJ0aL5vTj1kdrugTUoxOuEEvOpIVI/pFRPquR8ikrEfJA4QfOu27lHu3EnZFmx24YgU5vj38q9+G8grnQl68XZQt0+05iykT7S3OyhEe5putB4jjEys9mXDaydzuZKpuZQqfGzY1Rtc22NtxzNlhWdTBiOH2owepccdqmcxHQP7QHMAxJ8JxQz2lK1048wv7yxLKUxaX9RoTfhGTCT1Z1Ekxs1KPZ4CE1x5rBI4nKmqReBBgoWTpCel/++smC8X/E9J5qfmVABF8yaAGFpEXXLGjK3GItS4jF2tqJmHiavTAPajcaj9eSxm6LmjKxx0ocKGQDAIVdhhDtunbbBNoyPsPQ9qFyTK6HDB4yqfpI9bG++kw6Fhz3SWslqa5ddfA7k8N+q0D0uB6gnEmlGI94TZ2URp2KEglT2+av27RxkxPRlaZRrGWldNMsEWk6T3UK6cRcAOmZdRi9aGBxp9d04110Ugwq+ANnm3CUCK0Xow41EIZQOs5aIPYOp429N/yb9LG/tDqkm034XCPxxq3qbWJNf5l9P/vwgdzm3eQp8wRyhG0VGOzH11TQk0SPmMOp8y6LCpuDdiP5eZ08lMFXP6DSMUgGRmQgirepMG9dajgwghbUfJOrmLgYOSCWHxgFFu+SzD7k/LFh3L+Xl6wblbxYCsSFPyc+cmLATCtxaSxhbjKCtlHO5sRyXfMnBj3cC+dWF65GuKhgZdi49iTshPZx9hwejjl2+edErV6uLaDgsygs6w2D7QP2Lgq6WSXAPta0QmOdeVWQZyg5jYgGQB3tZKZDQrAKxmmEo8EMNPfDCc2GI/dzycU5ww+6tFX12acehGWUboh9sIX5kv1jdoyn1rBlSMlvFpV28bZbvQMsodImB1dH4bXanyzdNGrD7L+bLqKzgQHpU/ucYyWhVG9Aih8us7qRD6lZ8MTVDK6ENhY5+BeBGawFMiExjneTs3czJz+a9BPrT8PatvthcFdXGmywy0DqmqF1t19HSmrzQF9LKXQWlcqsgNnbrFOLnNqcAI8d9popOz2DFQ7HTMCOe9ug+evlQrOqDy+wAchFAjwLD1WNUnUU2yGY0FLHxmI8qvg9qZiwJCCfcv1A73f1aejOdIhrcPCK2HcdDB7c+j1haCqaSsQPetxLvLbOued1Nq7eZmSJCG8STyHRGpdrmR6tHakxfNJaoguKOJKi3Q0Eh1Sy1FwCdn/INtm6chbutpB/MeM7jg4zTN5hOYqcRvXFajc8dwOwvtzvIx2iHd4H6dvFnI01+Q6dSsCZFsNWmOWipibffM0vWtYPugbxcaKdXlQACeXEZsfkCJC1B7ewXKzVIywgIDOfrK6DbTTaN7Qwnjpb2gzi/0hBk7KCTTM3CS8e2AhCTtCQXYZVoMcY/du9+WmuvY4ZGZghEJR/PfNBj0C6tidF5rKhikvKZFFfOu5PWmOrs5pYVeVpz4xileehCVOqhL06T0kHJ4Ew6GdRcrH+eYxGCPsrbLkdYVyc7c+sj+d5HI4WjJUPSoQBOOjWnYnBysWRLD4XX4mFyD3k4lCL2TtTlwLFOQwvvwKPm9bojmW3HV8QodXUFe+TbeOKIRw6cEoC8kPKIOaUlTE/JYvVOBEwX7SnKPK+V2qxQuRQ5RSuSxDE8syjH/vhz4HHptOKxi/TfvIuMfCjHKKbfSlf061mYUkZqFfr6ByRkVJEl+1T/ViV7DnN+Pz2NJEQITlamigp0fU1jwZclIzYkgJm7a1l56Um+mcg6x/yOfPO2EkBMKgHTZ3J5e9cRNu82wZynqKJu5jMFrqQRUWhJFKnjAGlZm3GaqGzq7LewOtkwyanRxSFPq6q69J8cwG8wJiRaR/cr7XPwEvFzdFJFjyL6NftYDT6Dgb+72i6/iWYcdiX01pLfache/RTsg127+AXb8Bx6KcH8YaKKnTsarjQXqTXLkWqGrla5TpH1wUQ9/8Pk2ucGLqOtjQ+n/VwhGD0NDYQ+Hnvu9ZGjZfYe4iPBpVlIIaLP8SmbhgbRaTIQAcALiy37aRw4gy55vy2dBwtba3ZvDQC4TzX5zO+BOv1Zw5uoGMuZ2aaaUCLC6lqzzQBuVylsHVHHizVF41wdTUisD1SxYrD1aeN6FXF5t8jyJjhQy45ZfZikBjQ7oALqESnn3Rk1ib8Y85WP5unIzRMJAGotkGNDJedlBSJQnbnZKNE8x9ZhcwRn9YNv8jcsJlU+7la/4/SzqgXs6lOKfApHyvBquuqeHUq8soDMBXr3En6Ur9d0sQIBXK0DTSYpsbA85x/rT1l9Ts2A32F+zvwEAHtybm+qfXpVfnwBq0eMKchsI62JS9ZIRQZPhjg2bpmyEgRK+i5KBeEdfxa2N15OVb/D01V5LMyC2U+WR5tURDBHQC+Rq9qg5xCX8wRbV9D2Q/cxHg1e6CESjgivHqUBTcdc3jWitm4nJz2i6l7NNCa+oRzODV2aEtJ11qwqeAGvF9rr5NcxJ1DY803ErrJQyMxTbyoN04GCMETnYb7LwyjrvqrIy75XLaK0Ea3j/qrpAQL7NGC/PWIZcLsSIp6npxN9JOqkefXNsor7MNTHG/DwgyOxOEbXzRAP/MjuHkKYDQWz4fBaQMUhF27oufspJSpUEPrnG5WeBkEPahJlG58nlLEcLIMnyEQMlKycNOnfVCiEvQHjM5oKaI62O7fHNyzXcBvMWNQLLBiZFCSDoDoV7+rRoltkyRIQbJKhz5W0w3dKX1In2s8KSOfaP6kk92DhwzLSYYCccbfo6o2u8fecoNTrjjPkoDNcKskN7ZRfSm/StDD+iSAHISu9iIED/WfhiNRJDnSNWt3B66FAd999pbTMaantGS06DZZI/vy7iNDaD/r9Z7bwuKgPmeqaYjqfRZeMJ0gQI/S3r9114pXYIIZdk5Q57i6hL6ZS5d68NevQ8YjiRYg99jUN5Zf56rMNaqFlO23AsUx5xwJHrRtziP3IEawToSZE7llO6HCSU2DTdoWKjgBnDapHrCHNE+HCJlAi55Fo2gWe8iy9K3Jcc/EkP6WyziqFsTuX19lAUoD3n7P0rApNAbPAxVOGfP2ZuD7GWqHLvhHF6Zh29bkohrfz5oCk47Aakp7DoOUo7JtvRGEQHScKF6fE3TjLIjGzSauvNKhGmW1MCdpKMj8699OLtHqOIb1G74WXa595AP5k4OC44z2t2PyyG292/etQrXxWUuI+K7u5/VN/zo4RrW74LpyJ7Vf9XjYVY0s1N9T7zILwdYb4y04GZT0SuZqkYnANEYyUNdloLfVV00FnroXUiFzXR+VBXoMr/yY5n9S4Fht4QSDAFXMsXxjXjS+QI1aGfMYV+IqiePGGa+g9pcElouLhLvIFmP9CIH1xpE93drMU8hAJQdkABmUsB4PfqSYojdZPqHtdl6GgZqvJH/7T4f7dbxHxfkioYrWlRjwdxyWs+1DoedGQBpWEWSoOeSzD61LEPoN3BQkepvpVaP4UJcN4HOK2CI4XffrqbCkwy6FG9btNBu5YNBfYHqKjcT3agZzgjG6Gio7xg8yGlsHyrU3Zruoli1F2+vqMYDX41k+Wn4sIsDQlxIG5OpIFp5fgutXa0Y83gLyJkaU32+n/EKkHFpjV67fbcntlO2O46MRVUE2rqM4GA/5vbDpGdYimlnRPmWgVy3g6lPSyRSa8DlyKnP+ioJSPM3rUIjp89ytOQ1aoGczswyjkagNtQ4bhutQGXBI06470ZYjQjUd2SbuHVlNTshuZdABlnQc/p8WTuHI9FsqyiTl2jM6d7m3Xy0jhH3fgIJfJOPpCoa1Labz3AzGjI5BllL3sG6oKZqKFWjUvl7ejZQv35x9x/w1shjTWjWCIowoVc+Li3auALXysRltPZpvX2/L44zve1KmG6fmtb6vwPUoa0um6m9MlN92qmLA3SiVNS9HZ6olcdimSbjmzhyn7G0AXiRZG0p1YF14XTn11rbjSLOS+fhB2semahBs8WsGfV2COIoFqCZY5SMSkibRROUK7xDLsOv3siAq13F0S/qd8SBcC1sZVsdoukNXOQgDRTIvEUlZK46NfTsRrkVXvn+ACLjSgIYIzKJnv+HrO9kZa06/lmfd55FgKJxyQF8BuQ3hg+ViLFdtoLDay12FcojMTy5KDEoRXNUsfuiTnpww6lKOPbNd6LxFZXGBUyIAUvy/A3EDUjRlQrRQDV1SLTPLL4SjSkrWBLGCsP3tQ2/+vWMwwiFhDfSwijkY1ng+eORGa/woCJSR+DPHgq3RpIN+NFppal3u7e6KamqibFXL2epQDPtXbF1PlfFYXASKu63ItAZp5fkWw+qhWpb8TNbIpuE74S3k44YVqoSorXuVBh2Sd8Edl2WO1z1gLtzvredjGC6WoCJl1fJ3AGzo9vMzUK7U946l9OJiLyblbjI1m/uuajjya7qdbbMIvN3c/RfnljxEzt6/9y8fqflKVigUncvrzSjMA96bqzjd2VVVdEb+JxNAUpZUHvPMAKJYL/lI5WGgqT8pNX2Szds1YIWt4GNKUvoAqQIySv8B0vIKw+lV4WI7A2ucFMvWfEcN+6e/0w5EBKch1LEf5hR1VSGaOT/MVZML8dGIx4O2N5ntHd6uvGCK4hmsFGOQ7CuKPKpfvUh3xD/S2P52BXb4lcL1GXcAeSGi5W5wU5UpGH5DIpLNEMU/7yEWZqxdzCus63sjFjaAztikGRPxXqUMXy7TIZE1La6Osdy7HacBgpIbNJ/WQRIccuo2gtADwojwyIArAbWmSNRGSWhpRz+Z6EB+SWhsQ2IIMT/6nO+F4fTmM9e+EiIkr3NLCi+phj/VSoYzUoPAn0jfvOX1D40rgtGy4ba+mxdLFj0zuHv45ZEuyKUy5VuwQaIIC5ETwZQ4DvuPCWe5hnNad7v/olv2/Y9x7+ZEFL1nQGZLMl6AKlYBs0tKhpssy/c59HXI5wVzjM/N4sAT11Hegu/MWP0Svu3SCv7xz0nurzpVK4WZwslTRWnVP+ldVRADt/9rhNVviCmRjQHrAWo/SAhjOmF9EvZw3tyXFpWKACjZYRSUeydNaBZfW6phIGDVR4lgShLe7cG7knwtkbuLSLHRIBug354X2wQjrmEDTBj2TfhbQTimlLXkst9wE2GhQXMAEkzRyyRgUmq5mf0qKZcIM1Jk0t88LorHpkQA4/l1nleXBkpTVcM7Thor0mkymRhsqDC8TJCT6S8s7Kw24fIsODTXKQQmZUzyUJ7QDsoJvZJSen7R8hogSG18JNXn0pt6XGdMzJV7c0WFo85KQoDRg5MtQ1PWUPhH0yrzaqvoRHBkgHntSJBTDxtZZsR0Hpz0qT0rsCPv3/D2Dq3UZKwwxNBFdClgKlIpW/bT9wSyfDo0qocV9Q86k0eMyuIyFiDfSBFfvPwEnV+B1jfciOysrrfVHN0YTr5dTyv+sCmjXbN59eifqUeIY6rCuQWDpQ0YwbyJ9kMr57P7BuzPpQ0JYtk49DcwuOP3gD3VTWFahfV1eyLry5SGvtPNlpz3pftZ/eNinWPyvyZNpOvhl9lwtgix46WyZ/5+rYmILvYuKq+qC8HTSm9SdmSoE/oFNxuW/zTHFO+b3tHkD5L8MRg+98A859jj+EtvT6rigAEsg6LYR4OUo8XEZHzGErY6e4/kVIA5ZV8y6nL8bnp5wNg/Jjt+ceBAlfy6xfxdeN0x7V80TrAjrCCKKifyyxyguTvuAH4fcRxv5+C/SrBUb7jjLqc45rKy2/KsMhqLIxdkLi8ipxscOfIvQOt/l6aBjxS2vMk9KBKuAq/ulXr+jOsRt7FXK6i2/MslKfiWZ65gbhjFVz0MLZ4+Sw7GgnZh0r90eXixGsNkw1e+enlPI+0e9e4cuWH0tX0W0f6lhGrFfMltU9sAin3zLEnxbmzZ8a/NhI7eLoN7bO2mtxd7X2dpqiTeH/71BYJJnOjHgn5eDR0YzwQIg3o1y8OzeIGQ88Uh7M0u64aT+DD6qXbiLXex3KePbVLtL9khLCuhen/+Yy3BGE+CmGYJiP7EZFZliqJPepF0428KUvvKMReARUYU307IJi7YLRpm+XRF+9zGjUoUnXfyhy2fS6r1rO/nA3uHMiLOWHKgPPudJElgUFqcKi0+iGmkSf5LhbG4TaOV1fBp5JqzGobiVvjX4NidhiBFiWH7QPle9i6RVY1vftHKTZwtgIjzXzmtMoFaFplpjnCmS+iJ2XT2s86nPV6/IdReDf8ZS9kRW+5VzpRkKFSyhhKAtGHBLqB9s1msGGK1ml2ylDfBqfjaKmoJIjAXilGPBJZrvykITlpvamxIdil4NhENmq5I3xZnqEcKKjktOYXdV0jnE46jrr7ZsM8iJTDX/C0rr3ZCEIJX3AvYFiN8yjZxomfB/eGfQEYO+qKDNRwkZFHB+VJwioDpE8u4pvBmKaNFb83r6oHR+588Zxnd2CsM3WTfRDJogCdw0Z+xBGBNAHmS6y0/VXO1Rxu0LVIjSl9pOOmaH3Z79cB2YnqXtbz0NCdQnyXEfGfeyv29jcfaG1G9YgZYgZRNfW1AXkD6AgHm9rQifTgn5gvKaSYzmyys/NaPtRpM0+8xASSo3UnLywuokIYjeZRsIdAViARNh5zkM7Et1gV+1JEw6gcp/5R8Z0jQb2ZU46OpGL9xic3zOkWiY/Wwb32TxXGLJy/9CtIal8u/AAO2QrG6hoNVqLG3QYgaFr5NMBE7eD7xwvyYESexo8IbdpbjfU7WH2X/VHCm6vkTEnuKImYPckIqBkg9ctvPbWT6szHTN2gB0CW2hWajLe2lYrv3pbOn3JewFw7B3FudLaxUkoLcjgq7WWpc/QckzzeyU9NtG/oNxrZJyBEsgS3mw1Bd32deJXioU7RMofcfBFnf12UqvVI4am+fA7qWASJpVDRB6Fu+4tqTsvMi0DMdh0wtMTcq7A+oBX1ix9Q+DOmffRVSElRKWEGGNYEERfvGxAp9q4l/6oIRQWc7yNlEX00sKOa83qMohKTwi8TZoXUbDygTMyIq1ShoEoLi7t2416v52721pm0jna+7P26fBb74ehMdUv9Z8HiH8T+/pzpcad8QtjfT7qUMasvB/iOMsJxN/C7v8UNFKOdRkyPYOrNHzfaQnBER4Ra55kP/hO6JkqXjQsdS33by5uoSBXlp2mE2D6ACUHLKOFgDPz1NDerYhiblJqzNz3+vakeKhUzRyaZA3ctbKyjKtiJU1ijQ8Uw21M/ee3pyN7J7Gh120UI+6+uhd56GunHIcRI0hVgsjI2tD4ANJ8wth5dA0zK8Q256VrZqiX00Y4YoBfFpdmc7ZJmjATmzmi7Dh8nXh1PbX+ZDja6p7twnUVaRfa7izHhm5iKOGj/dzjYHdQCfzx90m3hOxOd40FkxT9XHO+YDrhcLSjyUy1k99LzYQgcn3/M5q4gty2poD1tpLR74KlU1chW9DHm3swP5Xe+i3QneXx3SljIZqelNPtGAMWy1atmgkvZL5J34MYRKG/qzO5x9tXb2/KXYp6sm29lvTgpCrkr984h2yR10Veyr/jnUSRP9TXFiQIbkRtqksJ9MBZev//YxK1PgDhdGf0MwB625zBO/qckf0wGPRNYlJ4SP73mJKbZjVc44E5rxlyd63JrAqCeQ2RSiA03ZLmeFSlazvUQUzFI8xEz4Jk0hiFpSoCBwpJU/UqqB6HuGbDnu7Q2Wur/5HfN+LSOKBULVv0oirxYZUCiKL131dEPJrVjbfgiSGv6hOy/lxpdQF//Uy33VB4mvK4P4jLLHtqZhP+cAZyQ4wIZd39f9Twt7/AuUm6CqO4WuC0rBPonyQOyhC5NXfi8TeekAGVPiwqGhSpMMz2Dk4CDkS2HIqzvDTJ7c36gcfYS3u+lLLfzC6I9r/XqXV+15voPrtYXdgE+9PaJihExZs6tqI3mou9AmNhP7d8oXkaj109ZfqG/lZKiUVSQmaHGVqM1VamqUJpfp5bjUTStJpA3pVJt1CKcYjGviP4SKbbaeEmiyKZkUUQfrs/feuhE1Ej8GwhqxncocVq7vYRJfwtFsosaQV93kpftjQu4EVixfHEDVjiTriruzqMG3Z5ucdwevqXmQij4BtBEtOE3/Msz3F4c6nTHvxQltCYhmXMemtG+ArsQtM+YrHevL84tby3I2nM83b4D5XmkIaIKSZdnmgPFUQI25WjeoZDg4aZBRFF6GK/uytrxB5zT4X3MBTu8A4msMh+UMDJ+PtstKN9QyxgYylJRstqsNfolfO+Q1qjxiJS2xnf5LoP02mbUfBh2kwW75/xIcsZGMTcZA+dZl13N6bwtzki5Q0sc4Awsgid2NFpOnQ4xulLJCXRXKsmnXprAuUJJDH/k1S4bHdZXI3wlFANRg7wCD8+cIwsVr+bi9SQjroEAt6ozC8mQZ/PxrcDx6iVSZkYZ7R1db8zmoyQjaHPsQOGdKZsqMBl/WuiimFQGfEzXJllUeO/HEt7pjTt7qSlTiIed/TRKnVbbbKQinC6AVSemkftru/T6Icvj/URYbMHqA/IlPZ5SPXURYdUB7+wGIdVVLEcqm1rQ+BTkU4OeU6Bi4By2xu0KOwabhbN3V2AeWP0ret37bLqgEEq1yfF3iRLO4+46WVkqB+FVMfGbUB5WwH66DYN/ngjwZSU99jxD0W8J8yTih1pjYQqtMEQFF67AtR5XV3Yk/Shz2CgH/pvAlJcgZ+joc3pnSS6vCocRtT4tPcfdipYEpZaUdmL85f1CVMoTXnCW1EDgBXz3c2LJUjRHMzn2tqa3wgZDGN9yZDG3slNBl1mMp0SR/6kunX0wZ6qNosXbfYtbadqdykpNjkpopYIvsIuOdjSnik0OJq3wOKp0GM9Gm7IBwJODGZ5u3VBD4s3y5obwYcP/LG/qVXfqaetpWM7HVs0aCGeXL52gcI6MlZc0JRfApsVgEZMF2TlMeyqym8EwQzhdS1qKhVJA/yfWAwIrJEBCYffU0SV67icfq/HVWg5P1uA8eebpGGz0GXiZMF9CDBxLzXVRH8rDo7Z4ECqAduyQUVQudOMJK/3go3KFOo+2CVg8Cmu4t6g6xjYvUneTHHhaqcVvuDqfIN/Pmez/BKFwk+NacO0ki6Ptg63Bt6elWS5IBXDxi8A5mEQZtbL4kd03wMaM9I735HlspUxSo2biuax8erfhhuVq9i1zS5HCfE1QhFt5EYmpJ0GfWkmuq+1UlcvATFPCebxqXhvrn04I3rJTV1EwLpGEfhAJWo/kNhI1uKXpoDd7444o19zyElew23PougLY+4lfKDDSA7SyTN3fOCt1mjhpK7LYsqRVC4IzG7qZ6oAI/cqrlPETl6Gi8mmDgyrmPS2hMod9kpHjh5zycsIunK67LIP9OxMem/FEpIY6qTGzJt6V7ZdhSGVfArxkm/9vKU/i6PbzMPaLjzhObm+TQDMANLooQ+r40j6elUlw0ZbrH1tsOA7cVwDqQV/ea+qF0Pcbbr261pV5sDZh2QrjoCdNHzkVXnBEaLoERu0gK5i7oGOHbUWUaN5y5U1nDTWtbaZQSM3scdFeVVJ+ymtPe6fzqP79qpGSls9IVj9fWiyTg9QXT2PgxyZcILA0Ejba43swOtF4LVYSigIiD7wk93tNKut3pmlkB3BqNuJ9EkpWpGaHdTN94ne6B3La/vFWRBi0+kowMbFMCSVTT5ceFqNG2Ri6qkqhUtKQeFa4Ud3/eRmtSmH73ChWIkP5fmQ8wVwL+xq5YRlnE0ITWzm8pHxWPTHQ7yKEgEVVWHFRT2IxpgUHLguOL6cBSlFCaeGthty/2oQ8Z2ls1J6pvWUo2JEKdBUWuj1W2ajbuQkl0uqSuzdBcfZvQKdycUErLO62a+fJX8xtZHP4XF78x9LuedzzxVjKt30MUuu4oysx0WmWkbr/smlarHEqPYi7cCGd2dLUF4T2NdskYkhUG4FLaSOqgeF0B2PwMC6hjAjNM6GKt7DsY5Vrp0N8j92w//7GDdN2/s/y4nVMREKZv9bxJeqUsuvxwNDWugKAHS5z5BzlUojB6cDx3Xb7lPNNXgQlnezk1vLu7UOSEHDH/zCD/efbcdryeS6cudQrx112E5Ot78aCwXCBfF9TQ7HStIGUtlT2QrpVLnCUKWRQr08ePELLLAtco0WSP6fyWxhb6euKnA0/frEyCjVk1rl4UFmcTFnl2FS55YJmucgv62wBXbW11Bhq3UP1whsErZIAxvDfWOCWEnaAjXaLJh7oghHPhElkvPTsK5Gl+vgDXskbcSw2FbhNScnHy3RAP4LNMxmWd8OAE8zSDK+fXNnD4DFFYC5C/ai1tqhMStJ1hL0PD7GyY3hE3IZw9z2JoiDo5or0dV9f4zgRlgNNhFL+gk/Y3Sk+rD0Az87p0r9clykyVc4QdnlrpWXMfYuRKR5kVDO+qun2ijr7QqkGqSx4/9G+iS4YQz8ifKmmaxZ3I9PpPHpyzTdaHuZItPRboqFMBRGfnru/F4xdoOfF0wnHieqkCqFSl+DUUNGdICpkN4zkFggyJPOrevOtVPtCfKGnGzstfGhxSm0xQ+eHzKOrQO58yZEemddqVy6IJ/soTynf97xeei4r/ZqR5W9XmvlGCdWZGruAdQ/05R6lPtNqhtNLgc85vF3rAq84Is8gUraQpvwLTO6olHYzNcbS/liVV2zrVuN6FuyPp9nLtrVpi2ndQ2ur/q269QN6sl2IzKp2H37tIbhOK+lvQ0ooOS0IrT93xHH4l1AL3qK+WtkSNRbzquGjYQlPH2/KNFNSwUASjXjJTdF2nNqggFwzibMSZq7/w8fxw5DPMeOrc4x0EvpA4QqHdOi4o9Mg/SrHBmI/rb7MtLNOVC6DjZRe7s8y94wFYWLsGCBEW09nvNOGO/rvTFKbqJNWfDBlRHYfabfJ0aYIY4RBHA1JgLXQFOeC3oh1qBEpQeosI8RBnLdM2dh6nZ+4g8YIJjs8ZNC1zma6WEepJDtgT4nhPapZ6l2NaIJQpw0R/8WilRdDNcW5dnjSt1rqY9x6FbkZRkpt6oWOy+WBl73y9p/mxZ2ZTWYhJzcwvgJJzTMEo/+VGSBa3QwhrTFa/rtfRrPeCx/GR+9UzlSWxcWnvuT4OV7cCvBCPnyjcfWaDyn+MbsIW9PHFvUtMWS8FTAw0HeTJmHdBq8SqM/c0i7yc8QkTrg5Fykez6odzxaMRN9g3qD3hj8NulsKXxqV6yk3bTdUNQiBATnSOZTYXkIx36Iq+SgKwgfpDB1o4ZxosJZtG3rqqMAdo1QIloG9aGx9dx7D1I7QgHS4GkIYmufnm6mRWENdQUQ1LeP8Add4gvAUN8Hd2S1CTEeKHCiH0xhjRZPWn8T5ZraZZwEF+mNcMTjisFhTefL5OwCMm4XAOnsnwIMn7x3pRCUymF6kudfl1WanPrn15Npt8owcyY4B3JOGDPCJQncwu2LmBqqmlt/jkvA8NkklKTx9Nf2vlSVJ1ohqNrr6dvtJ2yeSrj2DRVgweritRTg2O4SxjF1E0BrBm1pzrkZaU0JMovooVNLC1g+rHJ11TDjezZ57tImvQKK9bBtT83G2Gr4WcO4S82/XpUpmjZ4PFO/od8pokIEkm8ucA2VFauYCO4NFpC9bQrWzgRFX+gi39eqVZ/5a1isTEONbNJL2hCasWHUY44fry8t0PsTxAoPNpxWF7goKAQun+6HXPtyi0uTxk4z4uyv50dzWIU6puFyyRfJ1J3AJJyljYqG/olb7TtU09MMr7tpdbiTvOOXGsFWvDCLHIVWkrt2zuBvnTJJm79vNDQelZACRr0Swc0mrxWGWJ7BqeWEAeoqu54zsqRFnABaumuPujHoCXp9nHtPiiHxUePdOFnH7c/GnRuGpVj1zbMYNBtMwZJd7sdi+gsLVfsVatLHUuSSAtr8Ed9iLzK7e8SOT3Q2PiOwX4hGjsiySlFt08AxHIKSlwUiPMSiyiMBA/ybGwqIHGvociFstuacnuUrtppWilCxUaNMATkbEwtjQUr20e0BXTFKw+4kWjx8/c4+/VZhEt40XsO2ffJwo/Wapug1sZnpOHf4cNajjAM26ahibSn9ROZykaVxg6NBS8TEnL3Jp6mp1mVMcVZgOPF7FZuzAyYEtZa50iE2jod72rqQWS0iIx7u9gf6ddQvgZQsM4t+BSpdhuHlfNvF2IrZDeqm7kSbkB1BiG8p4cDOT+DgvcpzhzUGKNzfBtYXT8U9iwns52rJaszLDh87u4JNMUYPNaM51b0mYUG7lJg45ur5Z2WTJO9Nk93g2R1zSD5kiHcF0zPerRBLYy6f9ZMarflHrSEV82jqdyaqgmyX06vhKtSXS5ZIuy9x2wtMbCdXCSS90dxPtEV4VHgN7GLlFwmyFRkFunsoD0qDqU9GretYFUr2ZP2WUySNRo3SUPWyKVHcO/VKI/X82rZ/ms0g7bX2ZXRFLQnutUp3n9crAuOjOMHnIHPbKTx3/QNAC00ltvox96kae+nMccPj5o9oSSCERdwawWWtn3iqcm2Q+J/tTK39s5dodkvcdqQMZThSALBJSeJf2JDjd8/4G8J4m34PypsHzL0OsZXFYg9tj9fZ8mJtSF4BvLckTY0N14AiFYQEc/6fPDdnyfHNqLcpM27LLMhV8Z5InhlKF6xAG7oW0Df8vPLB6RJbsgXzex6FrZFHwRNMeb2WiD1v0V5VjDtV7XQ4ePBSJh8Ntq1RDaqKbZ1z1dFP22Yn4hwf8nilcc/KsdG5Ea6m4dzMDj3RNiRsiiR6PZXHgK8hZf5nhY/2V8FMN36LBZAn0AZkmXpSrzOU6grwU6CGvoreQHZRrGNtNUeht+icqDyJTNkQ3+46wMyrf+iNBwmYeYAjnFm1K03Jt5KvE8mw0rrgU28D4UjKU7nATExB2W7z0+3hWiaOZ0QAqAFeeiHZq3D9VmsQ+kX0TvqHv2NRBfufqTNb4KO6K/oH4FQ/ase9pluZ37WcIujYVuWlLPCfKDKsf6fBhkPNvHW0aglFJoqody9dyOHpXr8wKABytrMIsszRyBX3BJdUxMbOVIMnNsQi3NBltHVcqS+zY9ew1uOdx4XeNMlgX4ppRYsvv344Iz/z7tYPpqOLaB6Ly6klbdZVI5f7ccVvsfw6M68KUV9RYcJTvl0x0SLHbD/Vk9oVDztA4GPqXBkzLxuulrvLJLVeLZpQp7LphhWI4QTUP6gjuY/z7i5ZS7mFCIYT2Fh/tLkChR8TAdwGjoQYe4fXVhTRn6nIuzrm/zdweKj55xnAp0zUE9M+w70YGzHTsF2FN82Rg2sZ5GdOywSH1r6fZqSTeyW60ur06RgEOvI/KOm1EgDGWAsjuvyrhmIgfZECL1C/QAsowccQNYYTZl3KAul4WqFocDR3nz2qt0lHC+TKhMiV9gkebMxQxvzRm/nKUcxGmZp1zsjYnBJwm3CQ1D4WRjtthSOqDnycCtc8QDjxK+GnfnUKMj472cXkYMuTunjPvDnHJz8xh+YPUI5zqnRSWKNRwwr9yinQlDR237m2+KgPk7NrBC///Jdyd6")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/src/HttpClient.js b/src/HttpClient.js index 284378d..d44fef5 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,7 +12,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Feb 28, 2016 * + * LastModified: Jul 26, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -24,6 +24,8 @@ var Future = global.hprose.Future; var BytesIO = global.hprose.BytesIO; var TimeoutError = global.TimeoutError; + var localfile = (global.location !== undefined && global.location.protocol === 'file:'); + var corsSupport = (!localfile && 'withCredentials' in new XMLHttpRequest()); function noop(){} @@ -42,7 +44,7 @@ var future = new Future(); var xhr = new XMLHttpRequest(); xhr.open('POST', self.uri, true); - if (global.location !== undefined && global.location.protocol !== 'file:') { + if (corsSupport) { xhr.withCredentials = 'true'; } xhr.responseType = 'arraybuffer'; From fbc89cfa4953279645d9aee25f24f7e6e0ee6bbf Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 27 Jul 2016 10:07:03 +0800 Subject: [PATCH 38/86] Update README --- README.md | 4 ++-- README_zh_CN.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index dfc1902..2321d86 100644 --- a/README.md +++ b/README.md @@ -76,8 +76,8 @@ This project is the implementation of Hprose for HTML5. * ionic + cordova (http, tcp, websocket) * Chrome extentions (http, tcp, websocket) * APICloud (http, tcp*) -* DCloud (not yet) -* AppCan (not yet) +* DCloud (http) +* AppCan (http) * ... (http, websocket) TCP is only available on iOS for APICloud, because there is a bug of APICloud Android SDK, and they don't want to fix this bug. diff --git a/README_zh_CN.md b/README_zh_CN.md index 3f97240..5f94724 100644 --- a/README_zh_CN.md +++ b/README_zh_CN.md @@ -77,8 +77,8 @@ * ionic + cordova (http, tcp, websocket) * Chrome extentions (http, tcp, websocket) * APICloud (http, tcp*) -* DCloud (还不支持) -* AppCan (还不支持) +* DCloud (http) +* AppCan (http) * ... (http, websocket) 在 APICloud 平台上,TCP 只在 iOS 上有效,因为 APICloud 的 Android SDK 有个 bug,但是他们不肯修复,所以我也无能为力。 From 6475e533f5ac34d4e12d89e0b3849ae0562e59cf Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 12 Aug 2016 17:31:17 +0800 Subject: [PATCH 39/86] Improved Promises/A+ implementation --- bower.json | 2 +- dist/hprose-html5.js | 8 +- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 6358 ++++++++++++++++++++++++++++++++++++++ gulpfile.js | 15 +- package.json | 2 +- src/CopyRight.js | 2 +- src/Future.js | 168 +- 8 files changed, 6444 insertions(+), 113 deletions(-) create mode 100644 dist/hprose-html5.src.js diff --git a/bower.json b/bower.json index 3048fdc..d6a3892 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.12", + "version": "2.0.13", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 9ee5b9e..f0773f6 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.12 +// Hprose for HTML5 v2.0.13 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;t>n;++n)r[n]=e[n];return r}function i(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t=e.length;if(1e5>t)return String.fromCharCode.apply(String,u(e));for(var r=65535&t,n=t>>16,i=new Array(r?n+1:n),a=0;n>a;++a)i[a]=String.fromCharCode.apply(String,u(e.subarray(a<<16,a+1<<16)));return r&&(i[n]=String.fromCharCode.apply(String,u(e.subarray(n<<16,t)))),i.join("")}function a(e){for(var t=e.length,r=new Uint8Array(t),n=0;t>n;n++)r[n]=255&e.charCodeAt(n);return r}var o=!0;try{String.fromCharCode.apply(String,new Uint8Array([1]))}catch(s){o=!1}var u=o?function(e){return e}:n;e.hprose.generic=r,e.hprose.toBinaryString=i,e.hprose.toUint8Array=a,e.hprose.toArray=n}(this),function(e,t){"use strict";function r(e,t){for(var r=e.prototype,i=0,a=t.length;a>i;i++){var o=t[i],s=r[o];"function"==typeof s&&"undefined"==typeof e[o]&&Object.defineProperty(e,o,{value:n(s)})}}Function.prototype.bind||Object.defineProperty(Function.prototype,"bind",{value:function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),r=this,n=function(){},i=function(){return r.apply(this instanceof n?this:e,t.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),i.prototype=new n,i}}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e){var t=Object(this),r=parseInt(t.length,10)||0;if(0===r)return!1;var n,i=parseInt(arguments[1],10)||0;i>=0?n=i:(n=r+i,0>n&&(n=0));for(var a;r>n;){if(a=t[n],e===a||e!==e&&a!==a)return!0;n++}return!1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return r;return t}}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.findIndex called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return o;return-1}}),Array.prototype.fill||Object.defineProperty(Array.prototype,"fill",{value:function(e){if(null===this||this===t)throw new TypeError("this is null or not defined");for(var r=Object(this),n=r.length>>>0,i=arguments[1],a=i>>0,o=0>a?Math.max(n+a,0):Math.min(a,n),s=arguments[2],u=s===t?n:s>>0,c=0>u?Math.max(n+u,0):Math.min(u,n);c>o;)r[o]=e,o++;return r}}),Array.prototype.copyWithin||Object.defineProperty(Array.prototype,"copyWithin",{value:function(e,r){if(null===this||this===t)throw new TypeError("this is null or not defined");var n=Object(this),i=n.length>>>0,a=e>>0,o=0>a?Math.max(i+a,0):Math.min(a,i),s=r>>0,u=0>s?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=0>f?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-o),g=1;for(o>u&&u+h>o&&(g=-1,u+=h-1,o+=h-1);h>0;)u in n?n[o]=n[u]:delete n[o],u+=g,o+=g,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,a=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var o,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(o=arguments[2])}for(var u,c=a(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;c>l;)u=i[l],s?f[l]="undefined"==typeof o?s(u,l):s.call(o,u,l):f[l]=u,l+=1;return f.length=c,f}}()}),Array.of||Object.defineProperty(Array,"of",{value:function(){return Array.prototype.slice.call(arguments)}}),String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(e,t){return t=t||0,this.substr(t,e.length)===e}}),String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(e,t){var r=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>r.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return-1!==n&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?this.lengthe)throw new RangeError("repeat count must be non-negative");if(e===1/0)throw new RangeError("repeat count must be less than infinity");if(e=Math.floor(e),0===t.length||0===e)return"";if(t.length*e>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var a=[];for(var o in i)e.call(i,o)&&a.push(o);if(t)for(var s=0;n>s;s++)e.call(i,r[s])&&a.push(r[s]);return a}}()});var n=e.hprose.generic;r(Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight","includes","find","findIndex"]),r(String,["quote","substring","toLowerCase","toUpperCase","charAt","charCodeAt","indexOf","lastIndexOf","include","startsWith","endsWith","repeat","trim","trimLeft","trimRight","toLocaleLowerCase","toLocaleUpperCase","match","search","replace","split","substr","concat","slice"])}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,o=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(o(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],u=0,c=s.length;c>u;u++)n.set(s[u][0],s[u][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(o(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var o=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=o.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=o.createElement("iframe");e.style.display="none",o.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=o.documentElement;return function(){var t=a(arguments),r=o.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?o&&"onreadystatechange"in o.createElement("script")?l.setImmediate=u.readyStateChange():o&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():o&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e){return i(e)?e:u(e)}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(r){return s(r)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){a(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function g(){return h(arguments)}function p(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){a(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){a(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){var r=a(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function M(e,t,r){e?R(e,t,r):t.reject(r)}function x(e,t,r,n,a){function o(i){x(e,t,r,n,i)}function s(e){M(t,n,e)}if(i(a))return a===r?void s(new TypeError("Self resolution")):void a.then(o,s);if(null!==a&&"object"==typeof a||"function"==typeof a){var u;try{u=a.then}catch(c){return void s(c)}if("function"==typeof u){var f=!0;try{return void u.call(a,function(e){f&&(f=!1,o(e))},function(e){f&&(f=!1,s(e))})}catch(c){f&&(f=!1,s(c))}return}}e?R(e,n,a):n.resolve(a)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:a},join:{value:g},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(this._state===U){this._state=N,this._value=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onfulfill,r.onreject,this,r.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();r.onreject?R(r.onreject,r.next,e):r.next.reject(e)}}}},then:{value:function(e,t){if("function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null),e||t){var n=new r;return this._state===N?x(e,t,this,n,this._value):this._state===F?t?R(t,n,this._reason):n.reject(this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}return this}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(r){var n=e();return n===t?r:(n=i(n)?n:u(n),n.then(function(){return r}))},function(r){var n=e();if(n===t)throw r;return n=i(n)?n:u(n),n.then(function(){throw r})})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return b(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return _(this,e,t)}},filter:{value:function(e,t){return O(this,e,t)}},map:{value:function(e,t){return S(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var o=r.charCodeAt(i+1);if(56320>a&&o>=56320&&57343>=o){var s=((1023&a)<<10|1023&o)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=o;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&o)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&o)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function o(e,t){for(var r=[],n=new Array(65535),i=0,a=0,o=e.length;t>i&&o>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(o>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(o>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):o(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[g,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return[e.subarray(0,i),i]}function c(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,g=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?g:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return g.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?g:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){o.set(e,t),a[t]=e}function r(e){return o.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),o=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function o(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty); -case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(j.TagPoint),r.writeAsciiString(o)),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(j.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(j.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]])}else r.writeByte(j.TagOpenbrace);r.writeByte(j.TagClosebrace)}function b(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(j.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(j.TagObject),a.writeAsciiString(""+i),a.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(j.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(j.TagClass),n.writeAsciiString(""+t.length),n.writeByte(j.TagQuote),n.writeString(t),n.writeByte(j.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)v(e,r[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var O=e.Map,S=e.hprose.BytesIO,j=e.hprose.Tags,B=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(j.TagRef),this._stream.writeString(""+r),this._stream.writeByte(j.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new O,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){p(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeString:{value:function(e){v(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof O?b(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof O?b(this,e):m(this,e))}},writeObject:{value:function(e){T(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||T(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function p(){Object.defineProperties(this,{ref:{value:[]}})}function v(){return new p}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=b(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function q(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r[a]=o}return t.skip(1),r}function H(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return q(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new X;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=F(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function V(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:v()}})}var X=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(p.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),V.prototype=Object.create(g.prototype),V.prototype.constructor=V,Object.defineProperties(V.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=ze.length;n>r;r++)e=ze[r].outputFilter(e,t);return e}function b(e,t){for(var r=ze.length-1;r>=0;r--)e=ze[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function _(e,t){return nt.sendAndReceive(e,t)}function O(e,t,r,n){Ve(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Ce.length;if(e>1){var t=Ie+Math.floor(Math.random()*(e-1))+1;t>=e&&(t%=e),Ie=t,ke=Ce[Ie]}}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},a),!0}return!1}function B(e){var t={retry:Pe,idempotent:!0,failswitch:!0,timeout:xe,client:nt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),k(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?Qe.reject(r):Qe.resolve(e)};O(g,t,r,Qe.reject)}function E(e,t){return function(){return qe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===v||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Re,simple:Me,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}:{mode:u.Normal,byref:Re,simple:Me,timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==y;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case y:i.onerror=f;break;case p:i.byref=f;break;case d:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function M(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Fe?h.promise(function(i,a){We.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):De(e,t),n(t)}catch(i){n(i)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var p=h.readList();C(p,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(v){o=v}o?i(o):e(a)},i)})}function F(e){return function(){e&&(Fe=!1,o(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},We),We=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){$e(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,client:nt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,p=null,v=e[++a].context.mode;if(v>=u.Raw&&(g=new c),h===s.TagResult){if(v===u.Serialized?g=f.readRaw():v>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(v>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(v>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),p=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=p}}catch(y){return void i(y)}n(e)},i)})}function q(){qe=!0}function H(e){if(e=e||{},qe=!1,Fe)return h.promise(function(t,r){We.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return De}function G(e){typeof e===y&&(De=e)}function Y(){return ke}function J(){return Ne}function $(e){Ne=!!e}function K(){return xe}function V(e){xe="number"==typeof e?0|e:0}function X(){return Pe}function Z(e){Pe="number"==typeof e?0|e:0}function ee(){return Ue}function te(e){Ue=!!e}function re(e){Je=!!e}function ne(){return Je}function ie(){return Re}function ae(e){Re=!!e}function oe(){return Me}function se(e){Me=!!e}function ue(){return Le}function ce(e){Le=!!e}function fe(){return 0===ze.length?null:1===ze.length?ze[0]:ze.slice()}function le(e){ze.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&ze.push(e)}function ge(e){var t=ze.indexOf(e);return-1===t?!1:(ze.splice(t,1),!0)}function pe(){return ze}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=nt;return n&&(i={}),e||ke?(e&&(ke=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Qe.resolve(i),i):(o(B,i),Qe)):new Error("You should set server uri first!")}function de(e,t,n){var i=arguments.length;if(1>i||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==y&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==y&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return P(nt,e,t,qe)}function ye(e,t){return Qe.then(e,t)}function we(e,t,r){if(Ge[e]){var n=Ge[e];return n[t]?n[t]:null}return r&&(Ge[e]=Object.create(null)),null}function me(e,r,n,i){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)throw new TypeError("callback must be a function.");r=n}if(typeof r===y)return i=n,n=r,null===Ye&&(Ye=Oe()),void Ye.then(function(t){me(e,t,n,i)});if(typeof n!==y)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){me(e,t,n,i)});i===t&&(i=xe);var a=we(e,r,!0);if(null===a){var o=function(){P(nt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=we(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==we(e,r,!1)&&o()}},callbacks:[n]},Ge[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function be(e,t,r){if(e)if(typeof r===y){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ge[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ye){if(Ge[e]){var i=Ge[e];for(r in i)be(i,r,n)}}else Ye.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):be(Ge[e],r,n)}function _e(){return Ye}function Oe(){return P(nt,"#",[],!1)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Ee(e){rt.push(e),Xe=rt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ae(e){return Se(e),nt}var ke,Ce=[],Ie=-1,Re=!1,Me=!1,xe=3e4,Pe=10,Ue=!1,Ne=!1,Fe=!1,We=[],Le=!1,De=r,ze=[],qe=!1,He=[],Qe=new h,Ge=Object.create(null),Ye=null,Je=!0,$e=N,Ke=z,Ve=T,Xe=_,Ze=[],et=[],tt=[],rt=[],nt=this;Oe.sync=!0,Oe.idempotent=!0,Oe.failswitch=!0;var it=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return je(e),it}}}),at=Object.create(null,{use:{value:function(e){return Be(e),at}}}),ot=Object.create(null,{use:{value:function(e){return Ee(e),ot}}});Object.defineProperties(this,{"#":{value:Oe},onerror:{get:Q,set:G},uri:{get:Y},id:{get:_e},failswitch:{get:J,set:$},timeout:{get:K,set:V},retry:{get:X,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:oe,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},filters:{get:pe},useService:{value:ve},invoke:{value:de},ready:{value:ye},subscribe:{value:me},unsubscribe:{value:Te},use:{value:Ae},batch:{value:it},beforeFilter:{value:at},afterFilter:{value:ot}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(nt[e]=a[e])}),typeof n===v?(Ce=[n],Ie=0,ve(n,i)):Array.isArray(n)&&(Ce=n,Ie=Math.floor(Math.random()*Ce.length),ve(Ce[Ie],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var p="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function h(e,n){var i=new s,a=new XMLHttpRequest;a.open("POST",O.uri,!0),l&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var o in b)a.setRequestHeader(o,b[o]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=T),a.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw a.onload=r,a.onerror=r,a.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),a.send(u.buffer)}return i}function g(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function p(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?g(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,a,f);o.call(this,i,a,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:p}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,a){function l(){return 2147483647>m?++m:m=0}function h(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function g(e){O.resolve(e)}function p(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n]; -if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),100>b&&_.length>0){++b;var a=_.pop();O.then(function(){h(a[0],a[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=g,S.onmessage=p,S.onerror=r,S.onclose=v}function y(e,t){(null===S||S.readyState===f.CLOSING||S.readyState===f.CLOSED)&&d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),100>b?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new o,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var o=e.hprose.Future,s={},u=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=a}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,a=e.atob,o=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:o(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,o=n.dataLength,s=n.id;for(i.write(r);;){if(0>o&&i.length>=a&&(o=i.readInt32BE(),0!==(2147483648&o)&&(o&=2147483647,a=8)),8===a&&null===s&&i.length>=a&&(s=i.readInt32BE()),!(o>=0&&i.length-a>=o))break;t(i.read(o),s),a=4,s=null,i.trunc(),o=-1}n.stream=i,n.headerLength=a,n.dataLength=o,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function o(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,1>b&&(b=10)):b=10}function g(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new p;return m?((null===_||_.uri!==y.uri)&&(_=new a(y)),_.sendAndReceive(e,r,t)):((null===O||O.uri!==y.uri)&&(O=new o(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,p=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var o;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)o=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");o=new l}var s=this;return o.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),o.onclose=function(){--s.size},++this.size,o}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new v("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){o.clean(a),o.recycle(a),r.reject(new v("timeout"))},s)),n(a,function(e){o.clean(a),o.sendNext(a),r.resolve(e)}),a.onerror=function(e){o.clean(a),r.reject(e)};var u=t.length,c=new g(4+u);c.writeInt32BE(u),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizec;++c){var l=a[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),u=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=i.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?o.stringify(t):o.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;t>n;++n)r[n]=e[n];return r}function i(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t=e.length;if(1e5>t)return String.fromCharCode.apply(String,u(e));for(var r=65535&t,n=t>>16,i=new Array(r?n+1:n),a=0;n>a;++a)i[a]=String.fromCharCode.apply(String,u(e.subarray(a<<16,a+1<<16)));return r&&(i[n]=String.fromCharCode.apply(String,u(e.subarray(n<<16,t)))),i.join("")}function a(e){for(var t=e.length,r=new Uint8Array(t),n=0;t>n;n++)r[n]=255&e.charCodeAt(n);return r}var o=!0;try{String.fromCharCode.apply(String,new Uint8Array([1]))}catch(s){o=!1}var u=o?function(e){return e}:n;e.hprose.generic=r,e.hprose.toBinaryString=i,e.hprose.toUint8Array=a,e.hprose.toArray=n}(this),function(e,t){"use strict";function r(e,t){for(var r=e.prototype,i=0,a=t.length;a>i;i++){var o=t[i],s=r[o];"function"==typeof s&&"undefined"==typeof e[o]&&Object.defineProperty(e,o,{value:n(s)})}}Function.prototype.bind||Object.defineProperty(Function.prototype,"bind",{value:function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),r=this,n=function(){},i=function(){return r.apply(this instanceof n?this:e,t.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),i.prototype=new n,i}}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e){var t=Object(this),r=parseInt(t.length,10)||0;if(0===r)return!1;var n,i=parseInt(arguments[1],10)||0;i>=0?n=i:(n=r+i,0>n&&(n=0));for(var a;r>n;){if(a=t[n],e===a||e!==e&&a!==a)return!0;n++}return!1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return r;return t}}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.findIndex called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return o;return-1}}),Array.prototype.fill||Object.defineProperty(Array.prototype,"fill",{value:function(e){if(null===this||this===t)throw new TypeError("this is null or not defined");for(var r=Object(this),n=r.length>>>0,i=arguments[1],a=i>>0,o=0>a?Math.max(n+a,0):Math.min(a,n),s=arguments[2],u=s===t?n:s>>0,c=0>u?Math.max(n+u,0):Math.min(u,n);c>o;)r[o]=e,o++;return r}}),Array.prototype.copyWithin||Object.defineProperty(Array.prototype,"copyWithin",{value:function(e,r){if(null===this||this===t)throw new TypeError("this is null or not defined");var n=Object(this),i=n.length>>>0,a=e>>0,o=0>a?Math.max(i+a,0):Math.min(a,i),s=r>>0,u=0>s?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=0>f?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-o),g=1;for(o>u&&u+h>o&&(g=-1,u+=h-1,o+=h-1);h>0;)u in n?n[o]=n[u]:delete n[o],u+=g,o+=g,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,a=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var o,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(o=arguments[2])}for(var u,c=a(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;c>l;)u=i[l],s?f[l]="undefined"==typeof o?s(u,l):s.call(o,u,l):f[l]=u,l+=1;return f.length=c,f}}()}),Array.of||Object.defineProperty(Array,"of",{value:function(){return Array.prototype.slice.call(arguments)}}),String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(e,t){return t=t||0,this.substr(t,e.length)===e}}),String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(e,t){var r=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>r.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return-1!==n&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?this.lengthe)throw new RangeError("repeat count must be non-negative");if(e===1/0)throw new RangeError("repeat count must be less than infinity");if(e=Math.floor(e),0===t.length||0===e)return"";if(t.length*e>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var a=[];for(var o in i)e.call(i,o)&&a.push(o);if(t)for(var s=0;n>s;s++)e.call(i,r[s])&&a.push(r[s]);return a}}()});var n=e.hprose.generic;r(Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight","includes","find","findIndex"]),r(String,["quote","substring","toLowerCase","toUpperCase","charAt","charCodeAt","indexOf","lastIndexOf","include","startsWith","endsWith","repeat","trim","trimLeft","trimRight","toLocaleLowerCase","toLocaleUpperCase","match","search","replace","split","substr","concat","slice"])}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,o=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(o(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],u=0,c=s.length;c>u;u++)n.set(s[u][0],s[u][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(o(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var o=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=o.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=o.createElement("iframe");e.style.display="none",o.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=o.documentElement;return function(){var t=a(arguments),r=o.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?o&&"onreadystatechange"in o.createElement("script")?l.setImmediate=u.readyStateChange():o&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():o&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e){return i(e)?e:u(e)}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(r){return s(r)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){a(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function g(){return h(arguments)}function p(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){a(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){a(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){var r=a(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:a},join:{value:g},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(r){return void this.reject(r)}if("function"==typeof t){var n=!0;try{var a=this;return void t.call(e,function(e){n&&(n=!1,a.resolve(e))},function(e){n&&(n=!1,a.reject(e))})}catch(r){n&&(n=!1,this.reject(r))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var s=o.shift();M(s.onfulfill,s.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return b(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return _(this,e,t)}},filter:{value:function(e,t){return O(this,e,t)}},map:{value:function(e,t){return S(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var o=r.charCodeAt(i+1);if(56320>a&&o>=56320&&57343>=o){var s=((1023&a)<<10|1023&o)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=o;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&o)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&o)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function o(e,t){for(var r=[],n=new Array(65535),i=0,a=0,o=e.length;t>i&&o>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(o>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(o>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):o(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[g,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return[e.subarray(0,i),i]}function c(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,g=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?g:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return g.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?g:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){o.set(e,t),a[t]=e}function r(e){return o.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),o=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function o(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer: +case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(j.TagPoint),r.writeAsciiString(o)),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(j.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(j.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]])}else r.writeByte(j.TagOpenbrace);r.writeByte(j.TagClosebrace)}function b(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(j.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(j.TagObject),a.writeAsciiString(""+i),a.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(j.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(j.TagClass),n.writeAsciiString(""+t.length),n.writeByte(j.TagQuote),n.writeString(t),n.writeByte(j.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)v(e,r[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var O=e.Map,S=e.hprose.BytesIO,j=e.hprose.Tags,B=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(j.TagRef),this._stream.writeString(""+r),this._stream.writeByte(j.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new O,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){p(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeString:{value:function(e){v(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof O?b(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof O?b(this,e):m(this,e))}},writeObject:{value:function(e){T(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||T(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function p(){Object.defineProperties(this,{ref:{value:[]}})}function v(){return new p}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=b(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function q(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r[a]=o}return t.skip(1),r}function H(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return q(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new X;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=F(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function V(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:v()}})}var X=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(p.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),V.prototype=Object.create(g.prototype),V.prototype.constructor=V,Object.defineProperties(V.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=ze.length;n>r;r++)e=ze[r].outputFilter(e,t);return e}function b(e,t){for(var r=ze.length-1;r>=0;r--)e=ze[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function _(e,t){return nt.sendAndReceive(e,t)}function O(e,t,r,n){Ve(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Ce.length;if(e>1){var t=Ie+Math.floor(Math.random()*(e-1))+1;t>=e&&(t%=e),Ie=t,ke=Ce[Ie]}}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},a),!0}return!1}function B(e){var t={retry:Pe,idempotent:!0,failswitch:!0,timeout:xe,client:nt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),k(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?Qe.reject(r):Qe.resolve(e)};O(g,t,r,Qe.reject)}function E(e,t){return function(){return qe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===v||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Re,simple:Me,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}:{mode:u.Normal,byref:Re,simple:Me,timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==y;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case y:i.onerror=f;break;case p:i.byref=f;break;case d:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function M(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Fe?h.promise(function(i,a){We.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):De(e,t),n(t)}catch(i){n(i)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var p=h.readList();C(p,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(v){o=v}o?i(o):e(a)},i)})}function F(e){return function(){e&&(Fe=!1,o(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},We),We=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){$e(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,client:nt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,p=null,v=e[++a].context.mode;if(v>=u.Raw&&(g=new c),h===s.TagResult){if(v===u.Serialized?g=f.readRaw():v>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(v>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(v>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),p=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=p}}catch(y){return void i(y)}n(e)},i)})}function q(){qe=!0}function H(e){if(e=e||{},qe=!1,Fe)return h.promise(function(t,r){We.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return De}function G(e){typeof e===y&&(De=e)}function Y(){return ke}function J(){return Ne}function $(e){Ne=!!e}function K(){return xe}function V(e){xe="number"==typeof e?0|e:0}function X(){return Pe}function Z(e){Pe="number"==typeof e?0|e:0}function ee(){return Ue}function te(e){Ue=!!e}function re(e){Je=!!e}function ne(){return Je}function ie(){return Re}function ae(e){Re=!!e}function oe(){return Me}function se(e){Me=!!e}function ue(){return Le}function ce(e){Le=!!e}function fe(){return 0===ze.length?null:1===ze.length?ze[0]:ze.slice()}function le(e){ze.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&ze.push(e)}function ge(e){var t=ze.indexOf(e);return-1===t?!1:(ze.splice(t,1),!0)}function pe(){return ze}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=nt;return n&&(i={}),e||ke?(e&&(ke=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Qe.resolve(i),i):(o(B,i),Qe)):new Error("You should set server uri first!")}function de(e,t,n){var i=arguments.length;if(1>i||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==y&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==y&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return P(nt,e,t,qe)}function ye(e,t){return Qe.then(e,t)}function we(e,t,r){if(Ge[e]){var n=Ge[e];return n[t]?n[t]:null}return r&&(Ge[e]=Object.create(null)),null}function me(e,r,n,i){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)throw new TypeError("callback must be a function.");r=n}if(typeof r===y)return i=n,n=r,null===Ye&&(Ye=Oe()),void Ye.then(function(t){me(e,t,n,i)});if(typeof n!==y)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){me(e,t,n,i)});i===t&&(i=xe);var a=we(e,r,!0);if(null===a){var o=function(){P(nt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=we(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==we(e,r,!1)&&o()}},callbacks:[n]},Ge[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function be(e,t,r){if(e)if(typeof r===y){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ge[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ye){if(Ge[e]){var i=Ge[e];for(r in i)be(i,r,n)}}else Ye.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):be(Ge[e],r,n)}function _e(){return Ye}function Oe(){return P(nt,"#",[],!1)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Ee(e){rt.push(e),Xe=rt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ae(e){return Se(e),nt}var ke,Ce=[],Ie=-1,Re=!1,Me=!1,xe=3e4,Pe=10,Ue=!1,Ne=!1,Fe=!1,We=[],Le=!1,De=r,ze=[],qe=!1,He=[],Qe=new h,Ge=Object.create(null),Ye=null,Je=!0,$e=N,Ke=z,Ve=T,Xe=_,Ze=[],et=[],tt=[],rt=[],nt=this;Oe.sync=!0,Oe.idempotent=!0,Oe.failswitch=!0;var it=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return je(e),it}}}),at=Object.create(null,{use:{value:function(e){return Be(e),at}}}),ot=Object.create(null,{use:{value:function(e){return Ee(e),ot}}});Object.defineProperties(this,{"#":{value:Oe},onerror:{get:Q,set:G},uri:{get:Y},id:{get:_e},failswitch:{get:J,set:$},timeout:{get:K,set:V},retry:{get:X,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:oe,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},filters:{get:pe},useService:{value:ve},invoke:{value:de},ready:{value:ye},subscribe:{value:me},unsubscribe:{value:Te},use:{value:Ae},batch:{value:it},beforeFilter:{value:at},afterFilter:{value:ot}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(nt[e]=a[e])}),typeof n===v?(Ce=[n],Ie=0,ve(n,i)):Array.isArray(n)&&(Ce=n,Ie=Math.floor(Math.random()*Ce.length),ve(Ce[Ie],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var p="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function h(e,n){var i=new s,a=new XMLHttpRequest;a.open("POST",O.uri,!0),l&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var o in b)a.setRequestHeader(o,b[o]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=T),a.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw a.onload=r,a.onerror=r,a.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),a.send(u.buffer)}return i}function g(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function p(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?g(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,a,f);o.call(this,i,a,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:p}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,a){function l(){return 2147483647>m?++m:m=0}function h(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function g(e){O.resolve(e)}function p(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),100>b&&_.length>0){++b;var a=_.pop();O.then(function(){h(a[0],a[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){ +t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=g,S.onmessage=p,S.onerror=r,S.onclose=v}function y(e,t){(null===S||S.readyState===f.CLOSING||S.readyState===f.CLOSED)&&d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),100>b?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new o,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var o=e.hprose.Future,s={},u=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=a}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,a=e.atob,o=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:o(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,o=n.dataLength,s=n.id;for(i.write(r);;){if(0>o&&i.length>=a&&(o=i.readInt32BE(),0!==(2147483648&o)&&(o&=2147483647,a=8)),8===a&&null===s&&i.length>=a&&(s=i.readInt32BE()),!(o>=0&&i.length-a>=o))break;t(i.read(o),s),a=4,s=null,i.trunc(),o=-1}n.stream=i,n.headerLength=a,n.dataLength=o,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function o(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,1>b&&(b=10)):b=10}function g(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new p;return m?((null===_||_.uri!==y.uri)&&(_=new a(y)),_.sendAndReceive(e,r,t)):((null===O||O.uri!==y.uri)&&(O=new o(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,p=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var o;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)o=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");o=new l}var s=this;return o.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),o.onclose=function(){--s.size},++this.size,o}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new v("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){o.clean(a),o.recycle(a),r.reject(new v("timeout"))},s)),n(a,function(e){o.clean(a),o.sendNext(a),r.resolve(e)}),a.onerror=function(e){o.clean(a),r.reject(e)};var u=t.length,c=new g(4+u);c.writeInt32BE(u),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizec;++c){var l=a[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),u=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=i.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?o.stringify(t):o.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index eb8a927..9d1c3a5 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js new file mode 100644 index 0000000..1b728c3 --- /dev/null +++ b/dist/hprose-html5.src.js @@ -0,0 +1,6358 @@ +// Hprose for HTML5 v2.0.13 +// Copyright (c) 2008-2016 http://hprose.com +// Hprose is freely distributable under the MIT license. +// For all details and documentation: +// https://github.com/hprose/hprose-html5 + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Init.js * + * * + * hprose init for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + global.hprose = Object.create(null); + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Helper.js * + * * + * hprose helper for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + function generic(method) { + if (typeof method !== "function") { + throw new TypeError(method + " is not a function"); + } + return function(context) { + return method.apply(context, Array.prototype.slice.call(arguments, 1)); + }; + } + + var arrayLikeObjectArgumentsEnabled = true; + + try { + String.fromCharCode.apply(String, new Uint8Array([1])); + } + catch (e) { + arrayLikeObjectArgumentsEnabled = false; + } + + function toArray(arrayLikeObject) { + var n = arrayLikeObject.length; + var a = new Array(n); + for (var i = 0; i < n; ++i) { + a[i] = arrayLikeObject[i]; + } + return a; + } + + var getCharCodes = arrayLikeObjectArgumentsEnabled ? function(bytes) { return bytes; } : toArray; + + function toBinaryString(bytes) { + if (bytes instanceof ArrayBuffer) { + bytes = new Uint8Array(bytes); + } + var n = bytes.length; + if (n < 100000) { + return String.fromCharCode.apply(String, getCharCodes(bytes)); + } + var remain = n & 0xFFFF; + var count = n >> 16; + var a = new Array(remain ? count + 1 : count); + for (var i = 0; i < count; ++i) { + a[i] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(i << 16, (i + 1) << 16))); + } + if (remain) { + a[count] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(count << 16, n))); + } + return a.join(''); + } + + function toUint8Array(bs) { + var n = bs.length; + var data = new Uint8Array(n); + for (var i = 0; i < n; i++) { + data[i] = bs.charCodeAt(i) & 0xFF; + } + return data; + } + + global.hprose.generic = generic; + global.hprose.toBinaryString = toBinaryString; + global.hprose.toUint8Array = toUint8Array; + global.hprose.toArray = toArray; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Polyfill.js * + * * + * Polyfill for JavaScript. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + /* Function */ + if (!Function.prototype.bind) { + Object.defineProperty(Function.prototype, 'bind', { value: function(oThis) { + if (typeof this !== 'function') { + throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + var aArgs = Array.prototype.slice.call(arguments, 1), + toBind = this, + NOP = function() {}, + bound = function() { + return toBind.apply(this instanceof NOP ? this : oThis, + aArgs.concat(Array.prototype.slice.call(arguments))); + }; + if (this.prototype) { + NOP.prototype = this.prototype; + } + bound.prototype = new NOP(); + return bound; + } }); + } + /* Array */ + if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, 'includes', { value: function(searchElement /*, fromIndex*/ ) { + var O = Object(this); + var len = parseInt(O.length, 10) || 0; + if (len === 0) { + return false; + } + var n = parseInt(arguments[1], 10) || 0; + var k; + if (n >= 0) { + k = n; + } + else { + k = len + n; + if (k < 0) { k = 0; } + } + var currentElement; + while (k < len) { + currentElement = O[k]; + if (searchElement === currentElement || + (searchElement !== searchElement && currentElement !== currentElement)) { // NaN !== NaN + return true; + } + k++; + } + return false; + } }); + } + if (!Array.prototype.find) { + Object.defineProperty(Array.prototype, 'find', { value: function(predicate) { + if (this === null || this === undefined) { + throw new TypeError('Array.prototype.find called on null or undefined'); + } + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + var list = Object(this); + var length = list.length >>> 0; + var thisArg = arguments[1]; + var value; + for (var i = 0; i < length; i++) { + value = list[i]; + if (predicate.call(thisArg, value, i, list)) { + return value; + } + } + return undefined; + } }); + } + if (!Array.prototype.findIndex) { + Object.defineProperty(Array.prototype, 'findIndex', { value: function(predicate) { + if (this === null || this === undefined) { + throw new TypeError('Array.prototype.findIndex called on null or undefined'); + } + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + var list = Object(this); + var length = list.length >>> 0; + var thisArg = arguments[1]; + var value; + + for (var i = 0; i < length; i++) { + value = list[i]; + if (predicate.call(thisArg, value, i, list)) { + return i; + } + } + return -1; + } }); + } + if (!Array.prototype.fill) { + Object.defineProperty(Array.prototype, 'fill', { value: function(value) { + if (this === null || this === undefined) { + throw new TypeError('this is null or not defined'); + } + var O = Object(this); + var len = O.length >>> 0; + var start = arguments[1]; + var relativeStart = start >> 0; + var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var f = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + + while (k < f) { + O[k] = value; + k++; + } + return O; + } }); + } + if (!Array.prototype.copyWithin) { + Object.defineProperty(Array.prototype, 'copyWithin', { value: function(target, start/*, end*/) { + if (this === null || this === undefined) { + throw new TypeError('this is null or not defined'); + } + var O = Object(this); + var len = O.length >>> 0; + var relativeTarget = target >> 0; + var to = relativeTarget < 0 ? Math.max(len + relativeTarget, 0) : Math.min(relativeTarget, len); + var relativeStart = start >> 0; + var from = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var f = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + var count = Math.min(f - from, len - to); + var direction = 1; + if (from < to && to < (from + count)) { + direction = -1; + from += count - 1; + to += count - 1; + } + while (count > 0) { + if (from in O) { + O[to] = O[from]; + } + else { + delete O[to]; + } + from += direction; + to += direction; + count--; + } + return O; + } }); + } + if (!Array.from) { + Object.defineProperty(Array, 'from', { value: (function() { + var toStr = Object.prototype.toString; + var isCallable = function(fn) { + return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; + }; + var toInteger = function(value) { + var number = Number(value); + if (isNaN(number)) { return 0; } + if (number === 0 || !isFinite(number)) { return number; } + return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); + }; + var maxSafeInteger = Math.pow(2, 53) - 1; + var toLength = function(value) { + var len = toInteger(value); + return Math.min(Math.max(len, 0), maxSafeInteger); + }; + + return function(arrayLike/*, mapFn, thisArg */) { + var C = this; + var items = Object(arrayLike); + if (arrayLike === null || arrayLike === undefined) { + throw new TypeError("Array.from requires an array-like object - not null or undefined"); + } + var mapFn = arguments.length > 1 ? arguments[1] : void undefined; + var T; + if (typeof mapFn !== 'undefined') { + if (!isCallable(mapFn)) { + throw new TypeError('Array.from: when provided, the second argument must be a function'); + } + if (arguments.length > 2) { + T = arguments[2]; + } + } + var len = toLength(items.length); + var A = isCallable(C) ? Object(new C(len)) : new Array(len); + var k = 0; + var kValue; + while (k < len) { + kValue = items[k]; + if (mapFn) { + A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); + } + else { + A[k] = kValue; + } + k += 1; + } + A.length = len; + return A; + }; + }()) }); + } + if (!Array.of) { + Object.defineProperty(Array, 'of', { value: function() { + return Array.prototype.slice.call(arguments); + } }); + } + /* String */ + if (!String.prototype.startsWith) { + Object.defineProperty(String.prototype, 'startsWith', { value: function(searchString, position){ + position = position || 0; + return this.substr(position, searchString.length) === searchString; + } }); + } + if (!String.prototype.endsWith) { + Object.defineProperty(String.prototype, 'endsWith', { value: function(searchString, position) { + var subjectString = this.toString(); + if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + } }); + } + if (!String.prototype.includes) { + Object.defineProperty(String.prototype, 'includes', { value: function() { + if (typeof arguments[1] === "number") { + if (this.length < arguments[0].length + arguments[1].length) { + return false; + } + else { + return this.substr(arguments[1], arguments[0].length) === arguments[0]; + } + } + else { + return String.prototype.indexOf.apply(this, arguments) !== -1; + } + } }); + } + if (!String.prototype.repeat) { + Object.defineProperty(String.prototype, 'repeat', { value: function(count) { + var str = this.toString(); + count = +count; + if (count !== count) { + count = 0; + } + if (count < 0) { + throw new RangeError('repeat count must be non-negative'); + } + if (count === Infinity) { + throw new RangeError('repeat count must be less than infinity'); + } + count = Math.floor(count); + if (str.length === 0 || count === 0) { + return ''; + } + // Ensuring count is a 31-bit integer allows us to heavily optimize the + // main part. But anyway, most current (August 2014) browsers can't handle + // strings 1 << 28 chars or longer, so: + if (str.length * count >= 1 << 28) { + throw new RangeError('repeat count must not overflow maximum string size'); + } + var rpt = ''; + for (;;) { + if ((count & 1) === 1) { + rpt += str; + } + count >>>= 1; + if (count === 0) { + break; + } + str += str; + } + // Could we try: + // return Array(count + 1).join(this); + return rpt; + } }); + } + if (!String.prototype.trim) { + Object.defineProperty(String.prototype, 'trim', { value: function() { + return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, ''); + } }); + } + if (!String.prototype.trimLeft) { + Object.defineProperty(String.prototype, 'trimLeft', { value: function() { + return this.toString().replace(/^[\s\xa0]+/, ''); + } }); + } + if (!String.prototype.trimRight) { + Object.defineProperty(String.prototype, 'trimRight', { value: function() { + return this.toString().replace(/[\s\xa0]+$/, ''); + } }); + } + /* Object */ + if (!Object.keys) { + Object.defineProperty(Object, 'keys', { value: (function () { + var hasOwnProperty = Object.prototype.hasOwnProperty, + hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), + dontEnums = [ + 'toString', + 'toLocaleString', + 'valueOf', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'constructor' + ], + dontEnumsLength = dontEnums.length; + return function (obj) { + if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) { + throw new TypeError('Object.keys called on non-object'); + } + var result = []; + for (var prop in obj) { + if (hasOwnProperty.call(obj, prop)) { + result.push(prop); + } + } + if (hasDontEnumBug) { + for (var i=0; i < dontEnumsLength; i++) { + if (hasOwnProperty.call(obj, dontEnums[i])) { + result.push(dontEnums[i]); + } + } + } + return result; + }; + })() }); + } + /* Generic methods */ + var generic = global.hprose.generic; + + function genericMethods(obj, properties) { + var proto = obj.prototype; + for (var i = 0, len = properties.length; i < len; i++) { + var property = properties[i]; + var method = proto[property]; + if (typeof method === 'function' && typeof obj[property] === 'undefined') { + Object.defineProperty(obj, property, { value: generic(method) }); + } + } + } + genericMethods(Array, [ + "pop", + "push", + "reverse", + "shift", + "sort", + "splice", + "unshift", + "concat", + "join", + "slice", + "indexOf", + "lastIndexOf", + "filter", + "forEach", + "every", + "map", + "some", + "reduce", + "reduceRight", + "includes", + "find", + "findIndex" + ]); + genericMethods(String, [ + 'quote', + 'substring', + 'toLowerCase', + 'toUpperCase', + 'charAt', + 'charCodeAt', + 'indexOf', + 'lastIndexOf', + 'include', + 'startsWith', + 'endsWith', + 'repeat', + 'trim', + 'trimLeft', + 'trimRight', + 'toLocaleLowerCase', + 'toLocaleUpperCase', + 'match', + 'search', + 'replace', + 'split', + 'substr', + 'concat', + 'slice' + ]); + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * HarmonyMaps.js * + * * + * Harmony Maps for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + var hasWeakMap = 'WeakMap' in global; + var hasMap = 'Map' in global; + var hasForEach = true; + + if (hasMap) { + hasForEach = 'forEach' in new global.Map(); + } + + if (hasWeakMap && hasMap && hasForEach) { return; } + + var namespaces = Object.create(null); + var count = 0; + var reDefineValueOf = function (obj) { + var privates = Object.create(null); + var baseValueOf = obj.valueOf; + Object.defineProperty(obj, 'valueOf', { + value: function (namespace, n) { + if ((this === obj) && + (n in namespaces) && + (namespaces[n] === namespace)) { + if (!(n in privates)) { + privates[n] = Object.create(null); + } + return privates[n]; + } + else { + return baseValueOf.apply(this, arguments); + } + }, + writable: true, + configurable: true, + enumerable: false + }); + }; + + if (!hasWeakMap) { + global.WeakMap = function WeakMap() { + var namespace = Object.create(null); + var n = count++; + namespaces[n] = namespace; + var map = function (key) { + if (key !== Object(key)) { + throw new Error('value is not a non-null object'); + } + var privates = key.valueOf(namespace, n); + if (privates !== key.valueOf()) { + return privates; + } + reDefineValueOf(key); + return key.valueOf(namespace, n); + }; + var m = Object.create(WeakMap.prototype, { + get: { + value: function (key) { + return map(key).value; + } + }, + set: { + value: function (key, value) { + map(key).value = value; + } + }, + has: { + value: function (key) { + return 'value' in map(key); + } + }, + 'delete': { + value: function (key) { + return delete map(key).value; + } + }, + clear: { + value: function () { + delete namespaces[n]; + n = count++; + namespaces[n] = namespace; + } + } + }); + if (arguments.length > 0 && Array.isArray(arguments[0])) { + var iterable = arguments[0]; + for (var i = 0, len = iterable.length; i < len; i++) { + m.set(iterable[i][0], iterable[i][1]); + } + } + return m; + }; + } + + if (!hasMap) { + var objectMap = function () { + var namespace = Object.create(null); + var n = count++; + var nullMap = Object.create(null); + namespaces[n] = namespace; + var map = function (key) { + if (key === null) { return nullMap; } + var privates = key.valueOf(namespace, n); + if (privates !== key.valueOf()) { return privates; } + reDefineValueOf(key); + return key.valueOf(namespace, n); + }; + return { + get: function (key) { return map(key).value; }, + set: function (key, value) { map(key).value = value; }, + has: function (key) { return 'value' in map(key); }, + 'delete': function (key) { return delete map(key).value; }, + clear: function () { + delete namespaces[n]; + n = count++; + namespaces[n] = namespace; + } + }; + }; + var noKeyMap = function () { + var map = Object.create(null); + return { + get: function () { return map.value; }, + set: function (_, value) { map.value = value; }, + has: function () { return 'value' in map; }, + 'delete': function () { return delete map.value; }, + clear: function () { map = Object.create(null); } + }; + }; + var scalarMap = function () { + var map = Object.create(null); + return { + get: function (key) { return map[key]; }, + set: function (key, value) { map[key] = value; }, + has: function (key) { return key in map; }, + 'delete': function (key) { return delete map[key]; }, + clear: function () { map = Object.create(null); } + }; + }; + global.Map = function Map() { + var map = { + 'number': scalarMap(), + 'string': scalarMap(), + 'boolean': scalarMap(), + 'object': objectMap(), + 'function': objectMap(), + 'unknown': objectMap(), + 'undefined': noKeyMap(), + 'null': noKeyMap() + }; + var size = 0; + var keys = []; + var m = Object.create(Map.prototype, { + size: { + get : function () { return size; } + }, + get: { + value: function (key) { + return map[typeof(key)].get(key); + } + }, + set: { + value: function (key, value) { + if (!this.has(key)) { + keys.push(key); + size++; + } + map[typeof(key)].set(key, value); + } + }, + has: { + value: function (key) { + return map[typeof(key)].has(key); + } + }, + 'delete': { + value: function (key) { + if (this.has(key)) { + size--; + keys.splice(keys.indexOf(key), 1); + return map[typeof(key)]['delete'](key); + } + return false; + } + }, + clear: { + value: function () { + keys.length = 0; + for (var key in map) { map[key].clear(); } + size = 0; + } + }, + forEach: { + value: function (callback, thisArg) { + for (var i = 0, n = keys.length; i < n; i++) { + callback.call(thisArg, this.get(keys[i]), keys[i], this); + } + } + } + }); + if (arguments.length > 0 && Array.isArray(arguments[0])) { + var iterable = arguments[0]; + for (var i = 0, len = iterable.length; i < len; i++) { + m.set(iterable[i][0], iterable[i][1]); + } + } + return m; + }; + } + + if (!hasForEach) { + var OldMap = global.Map; + global.Map = function Map() { + var map = new OldMap(); + var size = 0; + var keys = []; + var m = Object.create(Map.prototype, { + size: { + get : function () { return size; } + }, + get: { + value: function (key) { + return map.get(key); + } + }, + set: { + value: function (key, value) { + if (!map.has(key)) { + keys.push(key); + size++; + } + map.set(key, value); + } + }, + has: { + value: function (key) { + return map.has(key); + } + }, + 'delete': { + value: function (key) { + if (map.has(key)) { + size--; + keys.splice(keys.indexOf(key), 1); + return map['delete'](key); + } + return false; + } + }, + clear: { + value: function () { + if ('clear' in map) { + map.clear(); + } + else { + for (var i = 0, n = keys.length; i < n; i++) { + map['delete'](keys[i]); + } + } + keys.length = 0; + size = 0; + } + }, + forEach: { + value: function (callback, thisArg) { + for (var i = 0, n = keys.length; i < n; i++) { + callback.call(thisArg, this.get(keys[i]), keys[i], this); + } + } + } + }); + if (arguments.length > 0 && Array.isArray(arguments[0])) { + var iterable = arguments[0]; + for (var i = 0, len = iterable.length; i < len; i++) { + m.set(iterable[i][0], iterable[i][1]); + } + } + return m; + }; + } +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * TimeoutError.js * + * * + * TimeoutError for HTML5. * + * * + * LastModified: Jul 17, 2015 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +function TimeoutError(message) { + Error.call(this); + this.message = message; + this.name = TimeoutError.name; + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, TimeoutError); + } +} + +TimeoutError.prototype = Object.create(Error.prototype); +TimeoutError.prototype.constructor = TimeoutError; + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * setImmediate.js * + * * + * setImmediate for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function(global, undefined) { + 'use strict'; + if (global.setImmediate) { return; } + + var doc = global.document; + var MutationObserver = global.MutationObserver || global.WebKitMutationObserver || global.MozMutationOvserver; + var polifill = {}; + var nextId = 1; + var tasks = {}; + + function wrap(handler) { + var args = Array.prototype.slice.call(arguments, 1); + return function() { + handler.apply(undefined, args); + }; + } + + function clear(handleId) { + delete tasks[handleId]; + } + + function run(handleId) { + var task = tasks[handleId]; + if (task) { + try { + task(); + } + finally { + clear(handleId); + } + } + } + + function create(args) { + tasks[nextId] = wrap.apply(undefined, args); + return nextId++; + } + + polifill.mutationObserver = function() { + var queue = [], + node = doc.createTextNode(''), + observer = new MutationObserver(function() { + while (queue.length > 0) { + run(queue.shift()); + } + }); + + observer.observe(node, {"characterData": true}); + + return function() { + var handleId = create(arguments); + queue.push(handleId); + node.data = handleId & 1; + return handleId; + }; + }; + + polifill.messageChannel = function() { + var channel = new global.MessageChannel(); + + channel.port1.onmessage = function(event) { + run(Number(event.data)); + }; + + return function() { + var handleId = create(arguments); + channel.port2.postMessage(handleId); + return handleId; + }; + }; + + polifill.nextTick = function() { + return function() { + var handleId = create(arguments); + global.process.nextTick( wrap( run, handleId ) ); + return handleId; + }; + }; + + polifill.postMessage = function() { + var iframe = doc.createElement('iframe'); + iframe.style.display = 'none'; + doc.documentElement.appendChild(iframe); + var iwin = iframe.contentWindow; + iwin.document.write(''); + iwin.document.close(); + var queue = []; + window.addEventListener('message', function() { + while (queue.length > 0) { + run(queue.shift()); + } + }); + return function() { + var handleId = create(arguments); + queue.push(handleId); + iwin.postMessage(1, "*"); + return handleId; + }; + }; + + polifill.readyStateChange = function() { + var html = doc.documentElement; + + return function() { + var handleId = create(arguments); + var script = doc.createElement('script'); + + script.onreadystatechange = function() { + run(handleId); + script.onreadystatechange = null; + html.removeChild(script); + script = null; + }; + + html.appendChild(script); + + return handleId; + }; + }; + + polifill.setTimeout = function() { + return function() { + var handleId = create(arguments); + global.setTimeout( wrap( run, handleId ), 0 ); + return handleId; + }; + }; + + // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. + var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); + attachTo = (attachTo && attachTo.setTimeout ? attachTo : global); + + // Don't get fooled by e.g. browserify environments. + // For Node.js before 0.9 + if (typeof(global.process) !== 'undefined' && + Object.prototype.toString.call(global.process) === '[object process]' && + !global.process.browser) { + attachTo.setImmediate = polifill.nextTick(); + } + // For IE 6–9 + else if (doc && ('onreadystatechange' in doc.createElement('script'))) { + attachTo.setImmediate = polifill.readyStateChange(); + } + // For MutationObserver, where supported + else if (doc && MutationObserver) { + attachTo.setImmediate = polifill.mutationObserver(); + } + // For web workers, where supported + else if (global.MessageChannel) { + attachTo.setImmediate = polifill.messageChannel(); + } + // For non-IE modern browsers + else if (doc && 'postMessage' in global && 'addEventListener' in global) { + attachTo.setImmediate = polifill.postMessage(); + } + // For older browsers + else { + attachTo.setImmediate = polifill.setTimeout(); + } + + attachTo.clearImmediate = clear; +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Future.js * + * * + * hprose Future for HTML5. * + * * + * LastModified: Aug 12, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var PENDING = 0; + var FULFILLED = 1; + var REJECTED = 2; + + var hasPromise = 'Promise' in global; + var setImmediate = global.setImmediate; + var setTimeout = global.setTimeout; + var clearTimeout = global.clearTimeout; + var TimeoutError = global.TimeoutError; + + function Future(computation) { + Object.defineProperties(this, { + _subscribers: { value: [] }, + resolve: { value: this.resolve.bind(this) }, + reject: { value: this.reject.bind(this) } + }); + var self = this; + if (typeof computation === 'function') { + setImmediate(function() { + try { + self.resolve(computation()); + } + catch(e) { + self.reject(e); + } + }); + } + } + + function isFuture(obj) { + return obj instanceof Future; + } + + function isPromise(obj) { + return isFuture(obj) || (hasPromise && (obj instanceof global.Promise) && (typeof (obj.then === 'function'))); + } + + function toPromise(obj) { + return (isPromise(obj) ? obj : value(obj)); + } + + function delayed(duration, value) { + var computation = (typeof value === 'function') ? + value : + function() { return value; }; + var future = new Future(); + setTimeout(function() { + try { + future.resolve(computation()); + } + catch(e) { + future.reject(e); + } + }, duration); + return future; + } + + function error(e) { + var future = new Future(); + future.reject(e); + return future; + } + + function value(v) { + var future = new Future(); + future.resolve(v); + return future; + } + + function sync(computation) { + try { + var result = computation(); + return value(result); + } + catch(e) { + return error(e); + } + } + + function promise(executor) { + var future = new Future(); + executor(future.resolve, future.reject); + return future; + } + + function arraysize(array) { + var size = 0; + Array.forEach(array, function() { ++size; }); + return size; + } + + function all(array) { + array = isPromise(array) ? array : value(array); + return array.then(function(array) { + var n = array.length; + var count = arraysize(array); + var result = new Array(n); + if (count === 0) { return value(result); } + var future = new Future(); + Array.forEach(array, function(element, index) { + toPromise(element).then(function(value) { + result[index] = value; + if (--count === 0) { + future.resolve(result); + } + }, + future.reject); + }); + return future; + }); + } + + function join() { + return all(arguments); + } + + function race(array) { + array = isPromise(array) ? array : value(array); + return array.then(function(array) { + var future = new Future(); + Array.forEach(array, function(element) { + toPromise(element).fill(future); + }); + return future; + }); + } + + function any(array) { + array = isPromise(array) ? array : value(array); + return array.then(function(array) { + var n = array.length; + var count = arraysize(array); + if (count === 0) { + throw new RangeError('any(): array must not be empty'); + } + var reasons = new Array(n); + var future = new Future(); + Array.forEach(array, function(element, index) { + toPromise(element).then(future.resolve, function(e) { + reasons[index] = e; + if (--count === 0) { + future.reject(reasons); + } + }); + }); + return future; + }); + } + + function settle(array) { + array = isPromise(array) ? array : value(array); + return array.then(function(array) { + var n = array.length; + var count = arraysize(array); + var result = new Array(n); + if (count === 0) { return value(result); } + var future = new Future(); + Array.forEach(array, function(element, index) { + var f = toPromise(element); + f.whenComplete(function() { + result[index] = f.inspect(); + if (--count === 0) { + future.resolve(result); + } + }); + }); + return future; + }); + } + + function attempt(handler/*, arg1, arg2, ... */) { + var args = Array.slice(arguments, 1); + return all(args).then(function(args) { + return handler.apply(undefined, args); + }); + } + + function run(handler, thisArg/*, arg1, arg2, ... */) { + var args = Array.slice(arguments, 2); + return all(args).then(function(args) { + return handler.apply(thisArg, args); + }); + } + + function wrap(handler, thisArg) { + return function() { + return all(arguments).then(function(args) { + return handler.apply(thisArg, args); + }); + }; + } + + function forEach(array, callback, thisArg) { + return all(array).then(function(array) { + return array.forEach(callback, thisArg); + }); + } + + function every(array, callback, thisArg) { + return all(array).then(function(array) { + return array.every(callback, thisArg); + }); + } + + function some(array, callback, thisArg) { + return all(array).then(function(array) { + return array.some(callback, thisArg); + }); + } + + function filter(array, callback, thisArg) { + return all(array).then(function(array) { + return array.filter(callback, thisArg); + }); + } + + function map(array, callback, thisArg) { + return all(array).then(function(array) { + return array.map(callback, thisArg); + }); + } + + function reduce(array, callback, initialValue) { + if (arguments.length > 2) { + return all(array).then(function(array) { + if (!isPromise(initialValue)) { + initialValue = value(initialValue); + } + return initialValue.then(function(value) { + return array.reduce(callback, value); + }); + }); + } + return all(array).then(function(array) { + return array.reduce(callback); + }); + } + + function reduceRight(array, callback, initialValue) { + if (arguments.length > 2) { + return all(array).then(function(array) { + if (!isPromise(initialValue)) { + initialValue = value(initialValue); + } + return initialValue.then(function(value) { + return array.reduceRight(callback, value); + }); + }); + } + return all(array).then(function(array) { + return array.reduceRight(callback); + }); + } + + function indexOf(array, searchElement, fromIndex) { + return all(array).then(function(array) { + if (!isPromise(searchElement)) { + searchElement = value(searchElement); + } + return searchElement.then(function(searchElement) { + return array.indexOf(searchElement, fromIndex); + }); + }); + } + + function lastIndexOf(array, searchElement, fromIndex) { + return all(array).then(function(array) { + if (!isPromise(searchElement)) { + searchElement = value(searchElement); + } + return searchElement.then(function(searchElement) { + if (fromIndex === undefined) { + fromIndex = array.length - 1; + } + return array.lastIndexOf(searchElement, fromIndex); + }); + }); + } + + function includes(array, searchElement, fromIndex) { + return all(array).then(function(array) { + if (!isPromise(searchElement)) { + searchElement = value(searchElement); + } + return searchElement.then(function(searchElement) { + return array.includes(searchElement, fromIndex); + }); + }); + } + + function find(array, predicate, thisArg) { + return all(array).then(function(array) { + return array.find(predicate, thisArg); + }); + } + + function findIndex(array, predicate, thisArg) { + return all(array).then(function(array) { + return array.findIndex(predicate, thisArg); + }); + } + + Object.defineProperties(Future, { + // port from Dart + delayed: { value: delayed }, + error: { value: error }, + sync: { value: sync }, + value: { value: value }, + // Promise compatible + all: { value: all }, + race: { value: race }, + resolve: { value: value }, + reject: { value: error }, + // extended methods + promise: { value: promise }, + isFuture: { value: isFuture }, + isPromise: { value: isPromise }, + toPromise: { value: toPromise }, + join: { value: join }, + any: { value: any }, + settle: { value: settle }, + attempt: { value: attempt }, + run: { value: run }, + wrap: { value: wrap }, + // for array + forEach: { value: forEach }, + every: { value: every }, + some: { value: some }, + filter: { value: filter }, + map: { value: map }, + reduce: { value: reduce }, + reduceRight: { value: reduceRight }, + indexOf: { value: indexOf }, + lastIndexOf: { value: lastIndexOf }, + includes: { value: includes }, + find: { value: find }, + findIndex: { value: findIndex } + }); + + function _call(callback, next, x) { + setImmediate(function() { + try { + var r = callback(x); + next.resolve(r); + } + catch(e) { + next.reject(e); + } + }); + } + + function _resolve(onfulfill, next, x) { + if (onfulfill) { + _call(onfulfill, next, x); + } + else { + next.resolve(x); + } + } + + function _reject(onreject, next, e) { + if (onreject) { + _call(onreject, next, e); + } + else { + next.reject(e); + } + } + + Object.defineProperties(Future.prototype, { + _value: { writable: true }, + _reason: { writable: true }, + _state: { value: PENDING, writable: true }, + resolve: { value: function(value) { + if (value === this) { + this.reject(new TypeError('Self resolution')); + return; + } + if (isPromise(value)) { + value.fill(this); + return; + } + if ((value !== null) && + (typeof value === 'object') || + (typeof value === 'function')) { + var then; + try { + then = value.then; + } + catch (e) { + this.reject(e); + return; + } + if (typeof then === 'function') { + var notrun = true; + try { + var self = this; + then.call(value, function(y) { + if (notrun) { + notrun = false; + self.resolve(y); + } + }, function(r) { + if (notrun) { + notrun = false; + self.reject(r); + } + }); + return; + } + catch (e) { + if (notrun) { + notrun = false; + this.reject(e); + } + } + return; + } + } + if (this._state === PENDING) { + this._state = FULFILLED; + this._value = value; + var subscribers = this._subscribers; + while (subscribers.length > 0) { + var subscriber = subscribers.shift(); + _resolve(subscriber.onfulfill, subscriber.next, value); + } + } + } }, + reject: { value: function(reason) { + if (this._state === PENDING) { + this._state = REJECTED; + this._reason = reason; + var subscribers = this._subscribers; + while (subscribers.length > 0) { + var subscriber = subscribers.shift(); + _reject(subscriber.onreject, subscriber.next, reason); + } + } + } }, + then: { value: function(onfulfill, onreject) { + if (typeof onfulfill !== 'function') { onfulfill = null; } + if (typeof onreject !== 'function') { onreject = null; } + var next = new Future(); + if (this._state === FULFILLED) { + _resolve(onfulfill, next, this._value); + } + else if (this._state === REJECTED) { + _reject(onreject, next, this._reason); + } + else { + this._subscribers.push({ + onfulfill: onfulfill, + onreject: onreject, + next: next + }); + } + return next; + } }, + done: { value: function(onfulfill, onreject) { + this.then(onfulfill, onreject).then(null, function(error) { + setImmediate(function() { throw error; }); + }); + } }, + inspect: { value: function() { + switch (this._state) { + case PENDING: return { state: 'pending' }; + case FULFILLED: return { state: 'fulfilled', value: this._value }; + case REJECTED: return { state: 'rejected', reason: this._reason }; + } + } }, + catchError: { value: function(onreject, test) { + if (typeof test === 'function') { + var self = this; + return this['catch'](function(e) { + if (test(e)) { + return self['catch'](onreject); + } + else { + throw e; + } + }); + } + return this['catch'](onreject); + } }, + 'catch': { value: function(onreject) { + return this.then(null, onreject); + } }, + fail: { value: function(onreject) { + this.done(null, onreject); + } }, + whenComplete: { value: function(action) { + return this.then( + function(v) { action(); return v; }, + function(e) { action(); throw e; } + ); + } }, + complete: { value: function(oncomplete) { + return this.then(oncomplete, oncomplete); + } }, + always: { value: function(oncomplete) { + this.done(oncomplete, oncomplete); + } }, + fill: { value: function(future) { + this.then(future.resolve, future.reject); + } }, + timeout: { value: function(duration, reason) { + var future = new Future(); + var timeoutId = setTimeout(function() { + future.reject(reason || new TimeoutError('timeout')); + }, duration); + this.whenComplete(function() { clearTimeout(timeoutId); }) + .fill(future); + return future; + } }, + delay: { value: function(duration) { + var future = new Future(); + this.then(function(result) { + setTimeout(function() { + future.resolve(result); + }, duration); + }, + future.reject); + return future; + } }, + tap: { value: function(onfulfilledSideEffect, thisArg) { + return this.then(function(result) { + onfulfilledSideEffect.call(thisArg, result); + return result; + }); + } }, + spread: { value: function(onfulfilledArray, thisArg) { + return this.then(function(array) { + return onfulfilledArray.apply(thisArg, array); + }); + } }, + get: { value: function(key) { + return this.then(function(result) { + return result[key]; + }); + } }, + set: { value: function(key, value) { + return this.then(function(result) { + result[key] = value; + return result; + }); + } }, + apply: { value: function(method, args) { + args = args || []; + return this.then(function(result) { + return all(args).then(function(args) { + return result[method].apply(result, args); + }); + }); + } }, + call: { value: function(method) { + var args = Array.slice(arguments, 1); + return this.then(function(result) { + return all(args).then(function(args) { + return result[method].apply(result, args); + }); + }); + } }, + bind: { value: function(method) { + var bindargs = Array.slice(arguments); + if (Array.isArray(method)) { + for (var i = 0, n = method.length; i < n; ++i) { + bindargs[0] = method[i]; + this.bind.apply(this, bindargs); + } + return; + } + bindargs.shift(); + var self = this; + Object.defineProperty(this, method, { value: function() { + var args = Array.slice(arguments); + return self.then(function(result) { + return all(bindargs.concat(args)).then(function(args) { + return result[method].apply(result, args); + }); + }); + } }); + return this; + } }, + forEach: { value: function(callback, thisArg) { + return forEach(this, callback, thisArg); + } }, + every: { value: function(callback, thisArg) { + return every(this, callback, thisArg); + } }, + some: { value: function(callback, thisArg) { + return some(this, callback, thisArg); + } }, + filter: { value: function(callback, thisArg) { + return filter(this, callback, thisArg); + } }, + map: { value: function(callback, thisArg) { + return map(this, callback, thisArg); + } }, + reduce: { value: function(callback, initialValue) { + if (arguments.length > 1) { + return reduce(this, callback, initialValue); + } + return reduce(this, callback); + } }, + reduceRight: { value: function(callback, initialValue) { + if (arguments.length > 1) { + return reduceRight(this, callback, initialValue); + } + return reduceRight(this, callback); + } }, + indexOf: { value: function(searchElement, fromIndex) { + return indexOf(this, searchElement, fromIndex); + } }, + lastIndexOf: { value: function(searchElement, fromIndex) { + return lastIndexOf(this, searchElement, fromIndex); + } }, + includes: { value: function(searchElement, fromIndex) { + return includes(this, searchElement, fromIndex); + } }, + find: { value: function(predicate, thisArg) { + return find(this, predicate, thisArg); + } }, + findIndex: { value: function(predicate, thisArg) { + return findIndex(this, predicate, thisArg); + } } + }); + + global.hprose.Future = Future; + + function Completer() { + var future = new Future(); + Object.defineProperties(this, { + future: { value: future }, + complete: { value: future.resolve }, + completeError: { value: future.reject }, + isCompleted: { get: function() { + return ( future._state !== PENDING ); + } } + }); + } + + global.hprose.Completer = Completer; + + global.hprose.resolved = value; + + global.hprose.rejected = error; + + global.hprose.deferred = function() { + var self = new Future(); + return Object.create(null, { + promise: { value: self }, + resolve: { value: self.resolve }, + reject: { value: self.reject } + }); + }; + + if (hasPromise) { return; } + + global.Promise = function(executor) { + Future.call(this); + executor(this.resolve, this.reject); + }; + + global.Promise.prototype = Object.create(Future.prototype); + global.Promise.prototype.constructor = Future; + + Object.defineProperties(global.Promise, { + all: { value: all }, + race: { value: race }, + resolve: { value: value }, + reject: { value: error } + }); + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * BytesIO.js * + * * + * hprose BytesIO for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var toBinaryString = global.hprose.toBinaryString; + + var _EMPTY_BYTES = new Uint8Array(0); + var _INIT_SIZE = 1024; + + function writeInt32BE(bytes, p, i) { + bytes[p++] = i >>> 24 & 0xFF; + bytes[p++] = i >>> 16 & 0xFF; + bytes[p++] = i >>> 8 & 0xFF; + bytes[p++] = i & 0xFF; + return p; + } + + function writeInt32LE(bytes, p, i) { + bytes[p++] = i & 0xFF; + bytes[p++] = i >>> 8 & 0xFF; + bytes[p++] = i >>> 16 & 0xFF; + bytes[p++] = i >>> 24 & 0xFF; + return p; + } + + function writeString(bytes, p, str) { + var n = str.length; + for (var i = 0; i < n; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit < 0x80) { + bytes[p++] = codeUnit; + } + else if (codeUnit < 0x800) { + bytes[p++] = 0xC0 | (codeUnit >> 6); + bytes[p++] = 0x80 | (codeUnit & 0x3F); + } + else if (codeUnit < 0xD800 || codeUnit > 0xDFFF) { + bytes[p++] = 0xE0 | (codeUnit >> 12); + bytes[p++] = 0x80 | ((codeUnit >> 6) & 0x3F); + bytes[p++] = 0x80 | (codeUnit & 0x3F); + } + else { + if (i + 1 < n) { + var nextCodeUnit = str.charCodeAt(i + 1); + if (codeUnit < 0xDC00 && 0xDC00 <= nextCodeUnit && nextCodeUnit <= 0xDFFF) { + var rune = (((codeUnit & 0x03FF) << 10) | (nextCodeUnit & 0x03FF)) + 0x010000; + bytes[p++] = 0xF0 | (rune >> 18); + bytes[p++] = 0x80 | ((rune >> 12) & 0x3F); + bytes[p++] = 0x80 | ((rune >> 6) & 0x3F); + bytes[p++] = 0x80 | (rune & 0x3F); + ++i; + continue; + } + } + throw new Error('Malformed string'); + } + } + return p; + } + + function readShortString(bytes, n) { + var charCodes = new Array(n); + var i = 0, off = 0; + for (var len = bytes.length; i < n && off < len; i++) { + var unit = bytes[off++]; + switch (unit >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + charCodes[i] = unit; + break; + case 12: + case 13: + if (off < len) { + charCodes[i] = ((unit & 0x1F) << 6) | + (bytes[off++] & 0x3F); + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 14: + if (off + 1 < len) { + charCodes[i] = ((unit & 0x0F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F); + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 15: + if (off + 2 < len) { + var rune = (((unit & 0x07) << 18) | + ((bytes[off++] & 0x3F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F)) - 0x10000; + if (0 <= rune && rune <= 0xFFFFF) { + charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); + charCodes[i] = ((rune & 0x03FF) | 0xDC00); + } + else { + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); + } + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + default: + throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); + } + } + if (i < n) { + charCodes.length = i; + } + return [String.fromCharCode.apply(String, charCodes), off]; + } + + function readLongString(bytes, n) { + var buf = []; + var charCodes = new Array(0xFFFF); + var i = 0, off = 0; + for (var len = bytes.length; i < n && off < len; i++) { + var unit = bytes[off++]; + switch (unit >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + charCodes[i] = unit; + break; + case 12: + case 13: + if (off < len) { + charCodes[i] = ((unit & 0x1F) << 6) | + (bytes[off++] & 0x3F); + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 14: + if (off + 1 < len) { + charCodes[i] = ((unit & 0x0F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F); + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 15: + if (off + 2 < len) { + var rune = (((unit & 0x07) << 18) | + ((bytes[off++] & 0x3F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F)) - 0x10000; + if (0 <= rune && rune <= 0xFFFFF) { + charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); + charCodes[i] = ((rune & 0x03FF) | 0xDC00); + } + else { + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); + } + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + default: + throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); + } + if (i >= 65534) { + var size = i + 1; + charCodes.length = size; + buf.push(String.fromCharCode.apply(String, charCodes)); + n -= size; + i = -1; + } + } + if (i > 0) { + charCodes.length = i; + buf.push(String.fromCharCode.apply(String, charCodes)); + } + return [buf.join(''), off]; + } + + function readString(bytes, n) { + if (n === undefined || n === null || (n < 0)) { n = bytes.length; } + if (n === 0) { return ['', 0]; } + return ((n < 100000) ? + readShortString(bytes, n) : + readLongString(bytes, n)); + } + + function readStringAsBytes(bytes, n) { + if (n === undefined) { n = bytes.length; } + if (n === 0) { return [_EMPTY_BYTES, 0]; } + var i = 0, off = 0; + for (var len = bytes.length; i < n && off < len; i++) { + var unit = bytes[off++]; + switch (unit >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + break; + case 12: + case 13: + if (off < len) { + off++; + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 14: + if (off + 1 < len) { + off += 2; + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + case 15: + if (off + 2 < len) { + var rune = (((unit & 0x07) << 18) | + ((bytes[off++] & 0x3F) << 12) | + ((bytes[off++] & 0x3F) << 6) | + (bytes[off++] & 0x3F)) - 0x10000; + if (0 <= rune && rune <= 0xFFFFF) { + i++; + } + else { + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); + } + } + else { + throw new Error('Unfinished UTF-8 octet sequence'); + } + break; + default: + throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); + } + } + return [bytes.subarray(0, off), off]; + } + + function pow2roundup(x) { + --x; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + function BytesIO() { + var a = arguments; + switch (a.length) { + case 1: + switch (a[0].constructor) { + case Uint8Array: + this._bytes = a[0]; + this._length = a[0].length; + break; + case BytesIO: + this._bytes = a[0].toBytes(); + this._length = a[0].length; + break; + case String: + this.writeString(a[0]); + break; + case Number: + this._bytes = new Uint8Array(a[0]); + break; + default: + this._bytes = new Uint8Array(a[0]); + this._length = this._bytes.length; + break; + } + break; + case 2: + this._bytes = new Uint8Array(a[0], a[1]); + this._length = a[1]; + break; + case 3: + this._bytes = new Uint8Array(a[0], a[1], a[2]); + this._length = a[2]; + break; + } + this.mark(); + } + + Object.defineProperties(BytesIO.prototype, { + _bytes: { value: null, writable: true }, + _length: { value: 0, writable: true }, + _wmark: { value: 0, writable: true }, + _off: { value: 0, writable: true }, + _rmark: { value: 0, writable: true }, + _grow: { value: function(n) { + var bytes = this._bytes; + var required = this._length + n; + var size = pow2roundup(required); + if (bytes) { + size *= 2; + if (size > bytes.length) { + var buf = new Uint8Array(size); + buf.set(bytes); + this._bytes = buf; + } + } + else { + size = Math.max(size, _INIT_SIZE); + this._bytes = new Uint8Array(size); + } + } }, + length: { get: function() { return this._length; } }, + capacity: { get: function() { + return this._bytes ? this._bytes.length : 0; + } }, + position: { get: function() { return this._off; } }, + // returns a view of the the internal buffer. + bytes: { get : function() { + return (this._bytes === null) ? + _EMPTY_BYTES : + this._bytes.subarray(0, this._length); + } }, + buffer: { get : function() { + if (this._bytes === null) { + return _EMPTY_BYTES.buffer; + } + if (this._bytes.buffer.slice) { + return this._bytes.buffer.slice(0, this._length); + } + var buf = new Uint8Array(this._length); + buf.set(this._bytes.subarray(0, this._length)); + return buf.buffer; + } }, + mark: { value: function() { + this._wmark = this._length; + this._rmark = this._off; + } }, + reset: { value: function() { + this._length = this._wmark; + this._off = this._rmark; + } }, + clear: { value: function() { + this._bytes = null; + this._length = 0; + this._wmark = 0; + this._off = 0; + this._rmark = 0; + } }, + writeByte: { value: function(b) { + this._grow(1); + this._bytes[this._length++] = b; + } }, + writeInt32BE: { value: function(i) { + if ((i === (i | 0)) && (i <= 2147483647)) { + this._grow(4); + this._length = writeInt32BE(this._bytes, this._length, i); + return; + } + throw new TypeError('value is out of bounds'); + } }, + writeUInt32BE: { value: function(i) { + if (((i & 0x7FFFFFFF) + 0x80000000 === i) && (i >= 0)) { + this._grow(4); + this._length = writeInt32BE(this._bytes, this._length, i | 0); + return; + } + throw new TypeError('value is out of bounds'); + } }, + writeInt32LE: { value: function(i) { + if ((i === (i | 0)) && (i <= 2147483647)) { + this._grow(4); + this._length = writeInt32LE(this._bytes, this._length, i); + return; + } + throw new TypeError('value is out of bounds'); + } }, + writeUInt32LE: { value: function(i) { + if (((i & 0x7FFFFFFF) + 0x80000000 === i) && (i >= 0)) { + this._grow(4); + this._length = writeInt32LE(this._bytes, this._length, i | 0); + return; + } + throw new TypeError('value is out of bounds'); + } }, + write: { value: function(data) { + var n = data.byteLength || data.length; + if (n === 0) { return; } + this._grow(n); + var bytes = this._bytes; + var length = this._length; + switch (data.constructor) { + case ArrayBuffer: + bytes.set(new Uint8Array(data), length); + break; + case Uint8Array: + bytes.set(data, length); + break; + case BytesIO: + bytes.set(data.bytes, length); + break; + default: + for (var i = 0; i < n; i++) { + bytes[length + i] = data[i]; + } + break; + } + this._length += n; + } }, + writeAsciiString: { value: function(str) { + var n = str.length; + if (n === 0) { return; } + this._grow(n); + var bytes = this._bytes; + var l = this._length; + for (var i = 0; i < n; ++i, ++l) { + bytes[l] = str.charCodeAt(i); + } + this._length = l; + } }, + writeString: { value: function(str) { + var n = str.length; + if (n === 0) { return; } + // A single code unit uses at most 3 bytes. + // Two code units at most 4. + this._grow(n * 3); + this._length = writeString(this._bytes, this._length, str); + } }, + readByte: { value: function() { + if (this._off < this._length) { + return this._bytes[this._off++]; + } + return -1; + } }, + readInt32BE: { value: function() { + var bytes = this._bytes; + var off = this._off; + if (off + 3 < this._length) { + var result = bytes[off++] << 24 | + bytes[off++] << 16 | + bytes[off++] << 8 | + bytes[off++]; + this._off = off; + return result; + } + throw new Error('EOF'); + } }, + readUInt32BE: { value: function() { + var value = this.readInt32BE(); + if (value < 0) { + return (value & 0x7FFFFFFF) + 0x80000000; + } + return value; + } }, + readInt32LE: { value: function() { + var bytes = this._bytes; + var off = this._off; + if (off + 3 < this._length) { + var result = bytes[off++] | + bytes[off++] << 8 | + bytes[off++] << 16 | + bytes[off++] << 24; + this._off = off; + return result; + } + throw new Error('EOF'); + } }, + readUInt32LE: { value: function() { + var value = this.readInt32LE(); + if (value < 0) { + return (value & 0x7FFFFFFF) + 0x80000000; + } + return value; + } }, + read: { value: function(n) { + if (this._off + n > this._length) { + n = this._length - this._off; + } + if (n === 0) { return _EMPTY_BYTES; } + return this._bytes.subarray(this._off, this._off += n); + } }, + skip: { value: function(n) { + if (this._off + n > this._length) { + n = this._length - this._off; + this._off = this._length; + } + else { + this._off += n; + } + return n; + } }, + // the result is an Uint8Array, and includes tag. + readBytes: { value: function(tag) { + var pos = Array.indexOf(this._bytes, tag, this._off); + var buf; + if (pos === -1) { + buf = this._bytes.subarray(this._off, this._length); + this._off = this._length; + } + else { + buf = this._bytes.subarray(this._off, pos + 1); + this._off = pos + 1; + } + return buf; + } }, + // the result is a String, and doesn't include tag. + // but the position is the same as readBytes + readUntil: { value: function(tag) { + var pos = Array.indexOf(this._bytes, tag, this._off); + var str = ''; + if (pos === this._off) { + this._off++; + } + else if (pos === -1) { + str = readString(this._bytes.subarray(this._off, this._length))[0]; + this._off = this._length; + } + else { + str = readString(this._bytes.subarray(this._off, pos))[0]; + this._off = pos + 1; + } + return str; + } }, + readAsciiString: { value: function(n) { + if (this._off + n > this._length) { + n = this._length - this._off; + } + if (n === 0) { return ''; } + return toBinaryString(this._bytes.subarray(this._off, this._off += n)); + } }, + // n is the UTF16 length + readStringAsBytes: { value: function(n) { + var r = readStringAsBytes(this._bytes.subarray(this._off, this._length), n); + this._off += r[1]; + return r[0]; + } }, + // n is the UTF16 length + readString: { value: function(n) { + var r = readString(this._bytes.subarray(this._off, this._length), n); + this._off += r[1]; + return r[0]; + } }, + // returns a view of the the internal buffer and clears `this`. + takeBytes: { value: function() { + var buffer = this.bytes; + this.clear(); + return buffer; + } }, + // returns a copy of the current contents and leaves `this` intact. + toBytes: { value: function() { + return new Uint8Array(this.bytes); + } }, + toString: { value: function() { + return readString(this.bytes, this._length)[0]; + } }, + clone: { value: function() { + return new BytesIO(this.toBytes()); + } }, + trunc: { value: function() { + this._bytes = this._bytes.subarray(this._off, this._length); + this._length = this._bytes.length; + this._off = 0; + this._wmark = 0; + this._rmark = 0; + } } + }); + + function toString(data) { + /* jshint -W086 */ + if (data.length === 0) { return ''; } + switch(data.constructor) { + case String: return data; + case BytesIO: data = data.bytes; + case ArrayBuffer: data = new Uint8Array(data); + case Uint8Array: return readString(data, data.length)[0]; + default: return String.fromCharCode.apply(String, data); + } + } + + Object.defineProperty(BytesIO, 'toString', { value: toString }); + + global.hprose.BytesIO = BytesIO; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * Tags.js * + * * + * hprose tags enum for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + global.hprose.Tags = { + /* Serialize Tags */ + TagInteger : 0x69, // 'i' + TagLong : 0x6C, // 'l' + TagDouble : 0x64, // 'd' + TagNull : 0x6E, // 'n' + TagEmpty : 0x65, // 'e' + TagTrue : 0x74, // 't' + TagFalse : 0x66, // 'f' + TagNaN : 0x4E, // 'N' + TagInfinity : 0x49, // 'I' + TagDate : 0x44, // 'D' + TagTime : 0x54, // 'T' + TagUTC : 0x5A, // 'Z' + TagBytes : 0x62, // 'b' + TagUTF8Char : 0x75, // 'u' + TagString : 0x73, // 's' + TagGuid : 0x67, // 'g' + TagList : 0x61, // 'a' + TagMap : 0x6d, // 'm' + TagClass : 0x63, // 'c' + TagObject : 0x6F, // 'o' + TagRef : 0x72, // 'r' + /* Serialize Marks */ + TagPos : 0x2B, // '+' + TagNeg : 0x2D, // '-' + TagSemicolon : 0x3B, // ',' + TagOpenbrace : 0x7B, // '{' + TagClosebrace : 0x7D, // '}' + TagQuote : 0x22, // '"' + TagPoint : 0x2E, // '.' + /* Protocol Tags */ + TagFunctions : 0x46, // 'F' + TagCall : 0x43, // 'C' + TagResult : 0x52, // 'R' + TagArgument : 0x41, // 'A' + TagError : 0x45, // 'E' + TagEnd : 0x7A // 'z' + }; +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * ClassManager.js * + * * + * hprose ClassManager for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + var WeakMap = global.WeakMap; + + var classCache = Object.create(null); + var aliasCache = new WeakMap(); + + function register(cls, alias) { + aliasCache.set(cls, alias); + classCache[alias] = cls; + } + + function getClassAlias(cls) { + return aliasCache.get(cls); + } + + function getClass(alias) { + return classCache[alias]; + } + + global.hprose.ClassManager = Object.create(null, { + register: { value: register }, + getClassAlias: { value: getClassAlias }, + getClass: { value: getClass } + }); + + global.hprose.register = register; + + register(Object, 'Object'); + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Writer.js * + * * + * hprose Writer for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Map = global.Map; + var BytesIO = global.hprose.BytesIO; + var Tags = global.hprose.Tags; + var ClassManager = global.hprose.ClassManager; + + function getClassName(obj) { + var cls = obj.constructor; + var classname = ClassManager.getClassAlias(cls); + if (classname) { return classname; } + if (cls.name) { + classname = cls.name; + } + else { + var ctor = cls.toString(); + classname = ctor.substr(0, ctor.indexOf('(')).replace(/(^\s*function\s*)|(\s*$)/ig, ''); + if (classname === '' || classname === 'Object') { + return (typeof(obj.getClassName) === 'function') ? obj.getClassName() : 'Object'; + } + } + if (classname !== 'Object') { + ClassManager.register(cls, classname); + } + return classname; + } + + var fakeWriterRefer = Object.create(null, { + set: { value: function () {} }, + write: { value: function () { return false; } }, + reset: { value: function () {} } + }); + + function RealWriterRefer(stream) { + Object.defineProperties(this, { + _stream: { value: stream }, + _ref: { value: new Map(), writable: true } + }); + } + + Object.defineProperties(RealWriterRefer.prototype, { + _refcount: { value: 0, writable: true }, + set: { value: function (val) { + this._ref.set(val, this._refcount++); + } }, + write: { value: function (val) { + var index = this._ref.get(val); + if (index !== undefined) { + this._stream.writeByte(Tags.TagRef); + this._stream.writeString('' + index); + this._stream.writeByte(Tags.TagSemicolon); + return true; + } + return false; + } }, + reset: { value: function () { + this._ref = new Map(); + this._refcount = 0; + } } + }); + + function realWriterRefer(stream) { + return new RealWriterRefer(stream); + } + + function Writer(stream, simple) { + Object.defineProperties(this, { + stream: { value: stream }, + _classref: { value: Object.create(null), writable: true }, + _fieldsref: { value: [], writable: true }, + _refer: { value: simple ? fakeWriterRefer : realWriterRefer(stream) } + }); + } + + function serialize(writer, value) { + var stream = writer.stream; + if (value === undefined || value === null) { + stream.writeByte(Tags.TagNull); + return; + } + switch (value.constructor) { + case Function: + stream.writeByte(Tags.TagNull); + return; + case Number: + writeNumber(writer, value); + return; + case Boolean: + writeBoolean(writer, value); + return; + case String: + switch (value.length) { + case 0: + stream.writeByte(Tags.TagEmpty); + return; + case 1: + stream.writeByte(Tags.TagUTF8Char); + stream.writeString(value); + return; + } + writer.writeStringWithRef(value); + return; + case Date: + writer.writeDateWithRef(value); + return; + case Map: + writer.writeMapWithRef(value); + return; + case ArrayBuffer: + case Uint8Array: + case BytesIO: + writer.writeBytesWithRef(value); + return; + case Int8Array: + case Int16Array: + case Int32Array: + case Uint16Array: + case Uint32Array: + writeIntListWithRef(writer, value); + return; + case Float32Array: + case Float64Array: + writeDoubleListWithRef(writer, value); + return; + default: + if (Array.isArray(value)) { + writer.writeListWithRef(value); + } + else { + var classname = getClassName(value); + if (classname === 'Object') { + writer.writeMapWithRef(value); + } + else { + writer.writeObjectWithRef(value); + } + } + break; + } + } + + function writeNumber(writer, n) { + var stream = writer.stream; + n = n.valueOf(); + if (n === (n | 0)) { + if (0 <= n && n <= 9) { + stream.writeByte(n + 0x30); + } + else { + stream.writeByte(Tags.TagInteger); + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagSemicolon); + } + } + else if (isNaN(n)) { + stream.writeByte(Tags.TagNaN); + } + else if (isFinite(n)) { + stream.writeByte(Tags.TagDouble); + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagSemicolon); + } + else { + stream.writeByte(Tags.TagInfinity); + stream.writeByte((n > 0) ? Tags.TagPos : Tags.TagNeg); + } + } + + function writeInteger(writer, n) { + var stream = writer.stream; + if (0 <= n && n <= 9) { + stream.writeByte(n + 0x30); + } + else { + if (n < -2147483648 || n > 2147483647) { + stream.writeByte(Tags.TagLong); + } + else { + stream.writeByte(Tags.TagInteger); + } + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagSemicolon); + } + } + + function writeDouble(writer, n) { + var stream = writer.stream; + if (isNaN(n)) { + stream.writeByte(Tags.TagNaN); + } + else if (isFinite(n)) { + stream.writeByte(Tags.TagDouble); + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagSemicolon); + } + else { + stream.writeByte(Tags.TagInfinity); + stream.writeByte((n > 0) ? Tags.TagPos : Tags.TagNeg); + } + } + + function writeBoolean(writer, b) { + writer.stream.writeByte(b.valueOf() ? Tags.TagTrue : Tags.TagFalse); + } + + function writeUTCDate(writer, date) { + writer._refer.set(date); + var stream = writer.stream; + var year = ('0000' + date.getUTCFullYear()).slice(-4); + var month = ('00' + (date.getUTCMonth() + 1)).slice(-2); + var day = ('00' + date.getUTCDate()).slice(-2); + var hour = ('00' + date.getUTCHours()).slice(-2); + var minute = ('00' + date.getUTCMinutes()).slice(-2); + var second = ('00' + date.getUTCSeconds()).slice(-2); + var millisecond = ('000' + date.getUTCMilliseconds()).slice(-3); + stream.writeByte(Tags.TagDate); + stream.writeAsciiString(year + month + day); + stream.writeByte(Tags.TagTime); + stream.writeAsciiString(hour + minute + second); + if (millisecond !== '000') { + stream.writeByte(Tags.TagPoint); + stream.writeAsciiString(millisecond); + } + stream.writeByte(Tags.TagUTC); + } + + function writeDate(writer, date) { + writer._refer.set(date); + var stream = writer.stream; + var year = ('0000' + date.getFullYear()).slice(-4); + var month = ('00' + (date.getMonth() + 1)).slice(-2); + var day = ('00' + date.getDate()).slice(-2); + var hour = ('00' + date.getHours()).slice(-2); + var minute = ('00' + date.getMinutes()).slice(-2); + var second = ('00' + date.getSeconds()).slice(-2); + var millisecond = ('000' + date.getMilliseconds()).slice(-3); + if ((hour === '00') && (minute === '00') && + (second === '00') && (millisecond === '000')) { + stream.writeByte(Tags.TagDate); + stream.writeAsciiString(year + month + day); + } + else if ((year === '1970') && (month === '01') && (day === '01')) { + stream.writeByte(Tags.TagTime); + stream.writeAsciiString(hour + minute + second); + if (millisecond !== '000') { + stream.writeByte(Tags.TagPoint); + stream.writeAsciiString(millisecond); + } + } + else { + stream.writeByte(Tags.TagDate); + stream.writeAsciiString(year + month + day); + stream.writeByte(Tags.TagTime); + stream.writeAsciiString(hour + minute + second); + if (millisecond !== '000') { + stream.writeByte(Tags.TagPoint); + stream.writeAsciiString(millisecond); + } + } + stream.writeByte(Tags.TagSemicolon); + } + + function writeTime(writer, time) { + writer._refer.set(time); + var stream = writer.stream; + var hour = ('00' + time.getHours()).slice(-2); + var minute = ('00' + time.getMinutes()).slice(-2); + var second = ('00' + time.getSeconds()).slice(-2); + var millisecond = ('000' + time.getMilliseconds()).slice(-3); + stream.writeByte(Tags.TagTime); + stream.writeAsciiString(hour + minute + second); + if (millisecond !== '000') { + stream.writeByte(Tags.TagPoint); + stream.writeAsciiString(millisecond); + } + stream.writeByte(Tags.TagSemicolon); + } + + function writeBytes(writer, bytes) { + writer._refer.set(bytes); + var stream = writer.stream; + stream.writeByte(Tags.TagBytes); + var n = bytes.byteLength || bytes.length; + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagQuote); + stream.write(bytes); + } + else { + stream.writeByte(Tags.TagQuote); + } + stream.writeByte(Tags.TagQuote); + } + + function writeString(writer, str) { + writer._refer.set(str); + var stream = writer.stream; + var n = str.length; + stream.writeByte(Tags.TagString); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagQuote); + stream.writeString(str); + } + else { + stream.writeByte(Tags.TagQuote); + } + stream.writeByte(Tags.TagQuote); + } + + function writeArray(writer, array, writeElem) { + writer._refer.set(array); + var stream = writer.stream; + var n = array.length; + stream.writeByte(Tags.TagList); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + for (var i = 0; i < n; i++) { + writeElem(writer, array[i]); + } + } + else { + stream.writeByte(Tags.TagOpenbrace); + } + stream.writeByte(Tags.TagClosebrace); + } + + function writeIntListWithRef(writer, list) { + if (!writer._refer.write(list)) { + writeArray(writer, list, writeInteger); + } + } + + function writeDoubleListWithRef(writer, list) { + if (!writer._refer.write(list)) { + writeArray(writer, list, writeDouble); + } + } + + function writeMap(writer, map) { + writer._refer.set(map); + var stream = writer.stream; + var fields = []; + for (var key in map) { + if (map.hasOwnProperty(key) && + typeof(map[key]) !== 'function') { + fields[fields.length] = key; + } + } + var n = fields.length; + stream.writeByte(Tags.TagMap); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + for (var i = 0; i < n; i++) { + serialize(writer, fields[i]); + serialize(writer, map[fields[i]]); + } + } + else { + stream.writeByte(Tags.TagOpenbrace); + } + stream.writeByte(Tags.TagClosebrace); + } + + function writeHarmonyMap(writer, map) { + writer._refer.set(map); + var stream = writer.stream; + var n = map.size; + stream.writeByte(Tags.TagMap); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + map.forEach(function(value, key) { + serialize(writer, key); + serialize(writer, value); + }); + } + else { + stream.writeByte(Tags.TagOpenbrace); + } + stream.writeByte(Tags.TagClosebrace); + } + + function writeObject(writer, obj) { + var stream = writer.stream; + var classname = getClassName(obj); + var fields, index; + if (classname in writer._classref) { + index = writer._classref[classname]; + fields = writer._fieldsref[index]; + } + else { + fields = []; + for (var key in obj) { + if (obj.hasOwnProperty(key) && + typeof(obj[key]) !== 'function') { + fields[fields.length] = key.toString(); + } + } + index = writeClass(writer, classname, fields); + } + stream.writeByte(Tags.TagObject); + stream.writeAsciiString('' + index); + stream.writeByte(Tags.TagOpenbrace); + writer._refer.set(obj); + var n = fields.length; + for (var i = 0; i < n; i++) { + serialize(writer, obj[fields[i]]); + } + stream.writeByte(Tags.TagClosebrace); + } + + function writeClass(writer, classname, fields) { + var stream = writer.stream; + var n = fields.length; + stream.writeByte(Tags.TagClass); + stream.writeAsciiString('' + classname.length); + stream.writeByte(Tags.TagQuote); + stream.writeString(classname); + stream.writeByte(Tags.TagQuote); + if (n > 0) { + stream.writeAsciiString('' + n); + stream.writeByte(Tags.TagOpenbrace); + for (var i = 0; i < n; i++) { + writeString(writer, fields[i]); + } + } + else { + stream.writeByte(Tags.TagOpenbrace); + } + stream.writeByte(Tags.TagClosebrace); + var index = writer._fieldsref.length; + writer._classref[classname] = index; + writer._fieldsref[index] = fields; + return index; + } + + Object.defineProperties(Writer.prototype, { + serialize: { value: function(value) { + serialize(this, value); + } }, + writeInteger: { value: function(value) { + writeInteger(this, value); + } }, + writeDouble: { value: function(value) { + writeDouble(this, value); + } }, + writeBoolean: { value: function(value) { + writeBoolean(this, value); + } }, + writeUTCDate: { value: function(value) { + writeUTCDate(this, value); + } }, + writeUTCDateWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeUTCDate(this, value); + } + } }, + writeDate: { value: function(value) { + writeDate(this, value); + } }, + writeDateWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeDate(this, value); + } + } }, + writeTime: { value: function(value) { + writeTime(this, value); + } }, + writeTimeWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeTime(this, value); + } + } }, + writeBytes: { value: function(value) { + writeBytes(this, value); + } }, + writeBytesWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeBytes(this, value); + } + } }, + writeString: { value: function(value) { + writeString(this, value); + } }, + writeStringWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeString(this, value); + } + } }, + writeList: { value: function(value) { + writeArray(this, value, serialize); + } }, + writeListWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeArray(this, value, serialize); + } + } }, + writeMap: { value: function(value) { + if (value instanceof Map) { + writeHarmonyMap(this, value); + } + else { + writeMap(this, value); + } + } }, + writeMapWithRef: { value: function(value) { + if (!this._refer.write(value)) { + if (value instanceof Map) { + writeHarmonyMap(this, value); + } + else { + writeMap(this, value); + } + } + } }, + writeObject: { value: function(value) { + writeObject(this, value); + } }, + writeObjectWithRef: { value: function(value) { + if (!this._refer.write(value)) { + writeObject(this, value); + } + } }, + reset: { value: function() { + this._classref = Object.create(null); + this._fieldsref.length = 0; + this._refer.reset(); + } } + }); + + global.hprose.Writer = Writer; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Reader.js * + * * + * hprose Reader for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Map = global.Map; + var BytesIO = global.hprose.BytesIO; + var Tags = global.hprose.Tags; + var ClassManager = global.hprose.ClassManager; + + function unexpectedTag(tag, expectTags) { + if (tag && expectTags) { + var expectTagStr = ''; + if (typeof(expectTags) === 'number') { + expectTagStr = String.fromCharCode(expectTags); + } + else { + expectTagStr = String.fromCharCode.apply(String, expectTags); + } + throw new Error('Tag "' + expectTagStr + '" expected, but "' + String.fromCharCode(tag) + '" found in stream'); + } + else if (tag) { + throw new Error('Unexpected serialize tag "' + String.fromCharCode(tag) + '" in stream'); + } + else { + throw new Error('No byte found in stream'); + } + } + + function readRaw(stream) { + var ostream = new BytesIO(); + _readRaw(stream, ostream); + return ostream.bytes; + } + + function _readRaw(stream, ostream) { + __readRaw(stream, ostream, stream.readByte()); + } + + function __readRaw(stream, ostream, tag) { + ostream.writeByte(tag); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case Tags.TagNull: + case Tags.TagEmpty: + case Tags.TagTrue: + case Tags.TagFalse: + case Tags.TagNaN: + break; + case Tags.TagInfinity: + ostream.writeByte(stream.readByte()); + break; + case Tags.TagInteger: + case Tags.TagLong: + case Tags.TagDouble: + case Tags.TagRef: + readNumberRaw(stream, ostream); + break; + case Tags.TagDate: + case Tags.TagTime: + readDateTimeRaw(stream, ostream); + break; + case Tags.TagUTF8Char: + readUTF8CharRaw(stream, ostream); + break; + case Tags.TagBytes: + readBytesRaw(stream, ostream); + break; + case Tags.TagString: + readStringRaw(stream, ostream); + break; + case Tags.TagGuid: + readGuidRaw(stream, ostream); + break; + case Tags.TagList: + case Tags.TagMap: + case Tags.TagObject: + readComplexRaw(stream, ostream); + break; + case Tags.TagClass: + readComplexRaw(stream, ostream); + _readRaw(stream, ostream); + break; + case Tags.TagError: + _readRaw(stream, ostream); + break; + default: unexpectedTag(tag); + } + } + function readNumberRaw(stream, ostream) { + var tag; + do { + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagSemicolon); + } + function readDateTimeRaw(stream, ostream) { + var tag; + do { + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagSemicolon && + tag !== Tags.TagUTC); + } + function readUTF8CharRaw(stream, ostream) { + ostream.writeString(stream.readString(1)); + } + function readBytesRaw(stream, ostream) { + var count = 0; + var tag = 48; + do { + count *= 10; + count += tag - 48; + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagQuote); + ostream.write(stream.read(count + 1)); + } + function readStringRaw(stream, ostream) { + var count = 0; + var tag = 48; + do { + count *= 10; + count += tag - 48; + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagQuote); + ostream.write(stream.readStringAsBytes(count + 1)); + } + function readGuidRaw(stream, ostream) { + ostream.write(stream.read(38)); + } + function readComplexRaw(stream, ostream) { + var tag; + do { + tag = stream.readByte(); + ostream.writeByte(tag); + } while (tag !== Tags.TagOpenbrace); + while ((tag = stream.readByte()) !== Tags.TagClosebrace) { + __readRaw(stream, ostream, tag); + } + ostream.writeByte(tag); + } + + function RawReader(stream) { + Object.defineProperties(this, { + stream: { value : stream }, + readRaw: { value: function() { return readRaw(stream); } } + }); + } + + global.hprose.RawReader = RawReader; + + var fakeReaderRefer = Object.create(null, { + set: { value: function() {} }, + read: { value: function() { unexpectedTag(Tags.TagRef); } }, + reset: { value: function() {} } + }); + + function RealReaderRefer() { + Object.defineProperties(this, { + ref: { value: [] } + }); + } + + Object.defineProperties(RealReaderRefer.prototype, { + set: { value: function(val) { this.ref.push(val); } }, + read: { value: function(index) { return this.ref[index]; } }, + reset: { value: function() { this.ref.length = 0; } } + }); + + function realReaderRefer() { + return new RealReaderRefer(); + } + + function getter(str) { + var obj = global; + var names = str.split('.'); + var i; + for (i = 0; i < names.length; i++) { + obj = obj[names[i]]; + if (obj === undefined) { + return null; + } + } + return obj; + } + function findClass(cn, poslist, i, c) { + if (i < poslist.length) { + var pos = poslist[i]; + cn[pos] = c; + var cls = findClass(cn, poslist, i + 1, '.'); + if (i + 1 < poslist.length) { + if (cls === null) { + cls = findClass(cn, poslist, i + 1, '_'); + } + } + return cls; + } + var classname = cn.join(''); + try { + var cl = getter(classname); + return ((typeof(cl) === 'function') ? cl : null); + } catch (e) { + return null; + } + } + + function getClass(classname) { + var cls = ClassManager.getClass(classname); + if (cls) { return cls; } + cls = getter(classname); + if (typeof(cls) === 'function') { + ClassManager.register(cls, classname); + return cls; + } + var poslist = []; + var pos = classname.indexOf('_'); + while (pos >= 0) { + poslist[poslist.length] = pos; + pos = classname.indexOf('_', pos + 1); + } + if (poslist.length > 0) { + var cn = classname.split(''); + cls = findClass(cn, poslist, 0, '.'); + if (cls === null) { + cls = findClass(cn, poslist, 0, '_'); + } + if (typeof(cls) === 'function') { + ClassManager.register(cls, classname); + return cls; + } + } + cls = function () {}; + Object.defineProperty(cls.prototype, 'getClassName', { value: function () { + return classname; + }}); + ClassManager.register(cls, classname); + return cls; + } + + + function readInt(stream, tag) { + var s = stream.readUntil(tag); + if (s.length === 0) { return 0; } + return parseInt(s, 10); + } + function unserialize(reader) { + var stream = reader.stream; + var tag = stream.readByte(); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: return tag - 48; + case Tags.TagInteger: return readIntegerWithoutTag(stream); + case Tags.TagLong: return readLongWithoutTag(stream); + case Tags.TagDouble: return readDoubleWithoutTag(stream); + case Tags.TagNull: return null; + case Tags.TagEmpty: return ''; + case Tags.TagTrue: return true; + case Tags.TagFalse: return false; + case Tags.TagNaN: return NaN; + case Tags.TagInfinity: return readInfinityWithoutTag(stream); + case Tags.TagDate: return readDateWithoutTag(reader); + case Tags.TagTime: return readTimeWithoutTag(reader); + case Tags.TagBytes: return readBytesWithoutTag(reader); + case Tags.TagUTF8Char: return readUTF8CharWithoutTag(reader); + case Tags.TagString: return readStringWithoutTag(reader); + case Tags.TagGuid: return readGuidWithoutTag(reader); + case Tags.TagList: return readListWithoutTag(reader); + case Tags.TagMap: return reader.useHarmonyMap ? readHarmonyMapWithoutTag(reader) : readMapWithoutTag(reader); + case Tags.TagClass: readClass(reader); return readObject(reader); + case Tags.TagObject: return readObjectWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + case Tags.TagError: throw new Error(readString(reader)); + default: unexpectedTag(tag); + } + } + function readIntegerWithoutTag(stream) { + return readInt(stream, Tags.TagSemicolon); + } + function readInteger(stream) { + var tag = stream.readByte(); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: return tag - 48; + case Tags.TagInteger: return readIntegerWithoutTag(stream); + default: unexpectedTag(tag); + } + } + function readLongWithoutTag(stream) { + var s = stream.readUntil(Tags.TagSemicolon); + var l = parseInt(s, 10); + if (l.toString() === s) { return l; } + return s; + } + function readLong(stream) { + var tag = stream.readByte(); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: return tag - 48; + case Tags.TagInteger: + case Tags.TagLong: return readLongWithoutTag(stream); + default: unexpectedTag(tag); + } + } + function readDoubleWithoutTag(stream) { + return parseFloat(stream.readUntil(Tags.TagSemicolon)); + } + function readDouble(stream) { + var tag = stream.readByte(); + switch (tag) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: return tag - 48; + case Tags.TagInteger: + case Tags.TagLong: + case Tags.TagDouble: return readDoubleWithoutTag(stream); + case Tags.TagNaN: return NaN; + case Tags.TagInfinity: return readInfinityWithoutTag(stream); + default: unexpectedTag(tag); + } + } + function readInfinityWithoutTag(stream) { + return ((stream.readByte() === Tags.TagNeg) ? -Infinity : Infinity); + } + function readBoolean(stream) { + var tag = stream.readByte(); + switch (tag) { + case Tags.TagTrue: return true; + case Tags.TagFalse: return false; + default: unexpectedTag(tag); + } + } + function readDateWithoutTag(reader) { + var stream = reader.stream; + var year = parseInt(stream.readAsciiString(4), 10); + var month = parseInt(stream.readAsciiString(2), 10) - 1; + var day = parseInt(stream.readAsciiString(2), 10); + var date; + var tag = stream.readByte(); + if (tag === Tags.TagTime) { + var hour = parseInt(stream.readAsciiString(2), 10); + var minute = parseInt(stream.readAsciiString(2), 10); + var second = parseInt(stream.readAsciiString(2), 10); + var millisecond = 0; + tag = stream.readByte(); + if (tag === Tags.TagPoint) { + millisecond = parseInt(stream.readAsciiString(3), 10); + tag = stream.readByte(); + if ((tag >= 48) && (tag <= 57)) { + stream.skip(2); + tag = stream.readByte(); + if ((tag >= 48) && (tag <= 57)) { + stream.skip(2); + tag = stream.readByte(); + } + } + } + if (tag === Tags.TagUTC) { + date = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond)); + } + else { + date = new Date(year, month, day, hour, minute, second, millisecond); + } + } + else if (tag === Tags.TagUTC) { + date = new Date(Date.UTC(year, month, day)); + } + else { + date = new Date(year, month, day); + } + reader.refer.set(date); + return date; + } + function readDate(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagDate: return readDateWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readTimeWithoutTag(reader) { + var stream = reader.stream; + var time; + var hour = parseInt(stream.readAsciiString(2), 10); + var minute = parseInt(stream.readAsciiString(2), 10); + var second = parseInt(stream.readAsciiString(2), 10); + var millisecond = 0; + var tag = stream.readByte(); + if (tag === Tags.TagPoint) { + millisecond = parseInt(stream.readAsciiString(3), 10); + tag = stream.readByte(); + if ((tag >= 48) && (tag <= 57)) { + stream.skip(2); + tag = stream.readByte(); + if ((tag >= 48) && (tag <= 57)) { + stream.skip(2); + tag = stream.readByte(); + } + } + } + if (tag === Tags.TagUTC) { + time = new Date(Date.UTC(1970, 0, 1, hour, minute, second, millisecond)); + } + else { + time = new Date(1970, 0, 1, hour, minute, second, millisecond); + } + reader.refer.set(time); + return time; + } + function readTime(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagTime: return readTimeWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readBytesWithoutTag(reader) { + var stream = reader.stream; + var count = readInt(stream, Tags.TagQuote); + var bytes = stream.read(count); + stream.skip(1); + reader.refer.set(bytes); + return bytes; + } + function readBytes(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagEmpty: return new Uint8Array(0); + case Tags.TagBytes: return readBytesWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readUTF8CharWithoutTag(reader) { + return reader.stream.readString(1); + } + function _readString(reader) { + var stream = reader.stream; + var s = stream.readString(readInt(stream, Tags.TagQuote)); + stream.skip(1); + return s; + } + function readStringWithoutTag(reader) { + var s = _readString(reader); + reader.refer.set(s); + return s; + } + function readString(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagEmpty: return ''; + case Tags.TagUTF8Char: return readUTF8CharWithoutTag(reader); + case Tags.TagString: return readStringWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readGuidWithoutTag(reader) { + var stream = reader.stream; + stream.skip(1); + var s = stream.readAsciiString(36); + stream.skip(1); + reader.refer.set(s); + return s; + } + function readGuid(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagGuid: return readGuidWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readListWithoutTag(reader) { + var stream = reader.stream; + var list = []; + reader.refer.set(list); + var count = readInt(stream, Tags.TagOpenbrace); + for (var i = 0; i < count; i++) { + list[i] = unserialize(reader); + } + stream.skip(1); + return list; + } + function readList(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagList: return readListWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readMapWithoutTag(reader) { + var stream = reader.stream; + var map = {}; + reader.refer.set(map); + var count = readInt(stream, Tags.TagOpenbrace); + for (var i = 0; i < count; i++) { + var key = unserialize(reader); + var value = unserialize(reader); + map[key] = value; + } + stream.skip(1); + return map; + } + function readMap(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagMap: return readMapWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readHarmonyMapWithoutTag(reader) { + var stream = reader.stream; + var map = new Map(); + reader.refer.set(map); + var count = readInt(stream, Tags.TagOpenbrace); + for (var i = 0; i < count; i++) { + var key = unserialize(reader); + var value = unserialize(reader); + map.set(key, value); + } + stream.skip(1); + return map; + } + function readHarmonyMap(reader) { + var tag = reader.stream.readByte(); + switch (tag) { + case Tags.TagNull: return null; + case Tags.TagMap: return readHarmonyMapWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readObjectWithoutTag(reader) { + var stream = reader.stream; + var cls = reader.classref[readInt(stream, Tags.TagOpenbrace)]; + var obj = new cls.classname(); + reader.refer.set(obj); + for (var i = 0; i < cls.count; i++) { + obj[cls.fields[i]] = unserialize(reader); + } + stream.skip(1); + return obj; + } + function readObject(reader) { + var tag = reader.stream.readByte(); + switch(tag) { + case Tags.TagNull: return null; + case Tags.TagClass: readClass(reader); return readObject(reader); + case Tags.TagObject: return readObjectWithoutTag(reader); + case Tags.TagRef: return readRef(reader); + default: unexpectedTag(tag); + } + } + function readClass(reader) { + var stream = reader.stream; + var classname = _readString(reader); + var count = readInt(stream, Tags.TagOpenbrace); + var fields = []; + for (var i = 0; i < count; i++) { + fields[i] = readString(reader); + } + stream.skip(1); + classname = getClass(classname); + reader.classref.push({ + classname: classname, + count: count, + fields: fields + }); + } + function readRef(reader) { + return reader.refer.read(readInt(reader.stream, Tags.TagSemicolon)); + } + + function Reader(stream, simple, useHarmonyMap) { + RawReader.call(this, stream); + this.useHarmonyMap = !!useHarmonyMap; + Object.defineProperties(this, { + classref: { value: [] }, + refer: { value: simple ? fakeReaderRefer : realReaderRefer() } + }); + } + + Reader.prototype = Object.create(RawReader.prototype); + Reader.prototype.constructor = Reader; + + Object.defineProperties(Reader.prototype, { + useHarmonyMap: { value: false, writable: true }, + checkTag: { value: function(expectTag, tag) { + if (tag === undefined) { tag = this.stream.readByte(); } + if (tag !== expectTag) { unexpectedTag(tag, expectTag); } + } }, + checkTags: { value: function(expectTags, tag) { + if (tag === undefined) { tag = this.stream.readByte(); } + if (expectTags.indexOf(tag) >= 0) { return tag; } + unexpectedTag(tag, expectTags); + } }, + unserialize: { value: function() { + return unserialize(this); + } }, + readInteger: { value: function() { + return readInteger(this.stream); + } }, + readLong: { value: function() { + return readLong(this.stream); + } }, + readDouble: { value: function() { + return readDouble(this.stream); + } }, + readBoolean: { value: function() { + return readBoolean(this.stream); + } }, + readDateWithoutTag: { value: function() { + return readDateWithoutTag(this); + } }, + readDate: { value: function() { + return readDate(this); + } }, + readTimeWithoutTag: { value: function() { + return readTimeWithoutTag(this); + } }, + readTime: { value: function() { + return readTime(this); + } }, + readBytesWithoutTag: { value: function() { + return readBytesWithoutTag(this); + } }, + readBytes: { value: function() { + return readBytes(this); + } }, + readStringWithoutTag: { value: function() { + return readStringWithoutTag(this); + } }, + readString: { value: function() { + return readString(this); + } }, + readGuidWithoutTag: { value: function() { + return readGuidWithoutTag(this); + } }, + readGuid: { value: function() { + return readGuid(this); + } }, + readListWithoutTag: { value: function() { + return readListWithoutTag(this); + } }, + readList: { value: function() { + return readList(this); + } }, + readMapWithoutTag: { value: function() { + return this.useHarmonyMap ? + readHarmonyMapWithoutTag(this) : + readMapWithoutTag(this); + } }, + readMap: { value: function() { + return this.useHarmonyMap ? + readHarmonyMap(this) : + readMap(this); + } }, + readObjectWithoutTag: { value: function() { + return readObjectWithoutTag(this); + } }, + readObject: { value: function() { + return readObject(this); + } }, + reset: { value: function() { + this.classref.length = 0; + this.refer.reset(); + } } + }); + + global.hprose.Reader = Reader; +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Formatter.js * + * * + * hprose Formatter for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + var BytesIO = global.hprose.BytesIO; + var Writer = global.hprose.Writer; + var Reader = global.hprose.Reader; + + function serialize(value, simple) { + var stream = new BytesIO(); + var writer = new Writer(stream, simple); + writer.serialize(value); + return stream; + } + + function unserialize(stream, simple, useHarmonyMap) { + if (!(stream instanceof BytesIO)) { + stream = new BytesIO(stream); + } + return new Reader(stream, simple, useHarmonyMap).unserialize(); + } + + global.hprose.Formatter = { + serialize: function (value, simple) { + return serialize(value, simple).bytes; + }, + unserialize: unserialize + }; + + global.hprose.serialize = serialize; + + global.hprose.unserialize = unserialize; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * ResultMode.js * + * * + * hprose ResultMode for HTML5. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + global.hprose.ResultMode = { + Normal: 0, + Serialized: 1, + Raw: 2, + RawWithEndTag: 3 + }; + global.hprose.Normal = global.hprose.ResultMode.Normal; + global.hprose.Serialized = global.hprose.ResultMode.Serialized; + global.hprose.Raw = global.hprose.ResultMode.Raw; + global.hprose.RawWithEndTag = global.hprose.ResultMode.RawWithEndTag; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * Client.js * + * * + * hprose client for HTML5. * + * * + * LastModified: Jul 26, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var setImmediate = global.setImmediate; + var Tags = global.hprose.Tags; + var ResultMode = global.hprose.ResultMode; + var BytesIO = global.hprose.BytesIO; + var Writer = global.hprose.Writer; + var Reader = global.hprose.Reader; + var Future = global.hprose.Future; + + var GETFUNCTIONS = new Uint8Array(1); + GETFUNCTIONS[0] = Tags.TagEnd; + + function noop(){} + + var s_boolean = 'boolean'; + var s_string = 'string'; + var s_number = 'number'; + var s_function = 'function'; + var s_object = 'object'; + + function Client(uri, functions, settings) { + + // private members + var _uri, + _uris = [], + _index = -1, + _byref = false, + _simple = false, + _timeout = 30000, + _retry = 10, + _idempotent = false, + _failswitch = false, + _lock = false, + _tasks = [], + _useHarmonyMap = false, + _onerror = noop, + _filters = [], + _batch = false, + _batches = [], + _ready = new Future(), + _topics = Object.create(null), + _id = null, + _keepAlive = true, + _invokeHandler = invokeHandler, + _batchInvokeHandler = batchInvokeHandler, + _beforeFilterHandler = beforeFilterHandler, + _afterFilterHandler = afterFilterHandler, + _invokeHandlers = [], + _batchInvokeHandlers = [], + _beforeFilterHandlers = [], + _afterFilterHandlers = [], + + self = this; + + function outputFilter(request, context) { + for (var i = 0, n = _filters.length; i < n; i++) { + request = _filters[i].outputFilter(request, context); + } + return request; + } + + function inputFilter(response, context) { + for (var i = _filters.length - 1; i >= 0; i--) { + response = _filters[i].inputFilter(response, context); + } + return response; + } + + function beforeFilterHandler(request, context) { + request = outputFilter(request, context); + return _afterFilterHandler(request, context) + .then(function(response) { + if (context.oneway) { return; } + return inputFilter(response, context); + }); + } + + function afterFilterHandler(request, context) { + return self.sendAndReceive(request, context); + } + + function sendAndReceive(request, context, onsuccess, onerror) { + _beforeFilterHandler(request, context) + .then(onsuccess, function(e) { + if (retry(request, context, onsuccess, onerror)) { return; } + onerror(e); + }); + } + + function failswitch() { + var n = _uris.length; + if (n > 1) { + var i = _index + Math.floor(Math.random() * (n - 1)) + 1; + if (i >= n) { + i %= n; + } + _index = i; + _uri = _uris[_index]; + } + } + + function retry(data, context, onsuccess, onerror) { + if (context.failswitch) { + failswitch(); + } + if (context.idempotent) { + if (--context.retry >= 0) { + var interval = (context.retry >= 10) ? 500 : (10 - context.retry) * 500; + global.setTimeout(function() { + sendAndReceive(data, context, onsuccess, onerror); + }, interval); + return true; + } + } + return false; + } + + function initService(stub) { + var context = { + retry: _retry, + idempotent: true, + failswitch: true, + timeout: _timeout, + client: self, + userdata: {} + }; + var onsuccess = function(data) { + var error = null; + try { + var stream = new BytesIO(data); + var reader = new Reader(stream, true); + var tag = stream.readByte(); + switch (tag) { + case Tags.TagError: + error = new Error(reader.readString()); + break; + case Tags.TagFunctions: + var functions = reader.readList(); + reader.checkTag(Tags.TagEnd); + setFunctions(stub, functions); + break; + default: + error = new Error('Wrong Response:\r\n' + BytesIO.toString(data)); + break; + } + } + catch (e) { + error = e; + } + if (error !== null) { + _ready.reject(error); + } + else { + _ready.resolve(stub); + } + }; + sendAndReceive(GETFUNCTIONS, context, onsuccess, _ready.reject); + } + + function setFunction(stub, name) { + return function() { + if (_batch) { + return _invoke(stub, name, Array.slice(arguments), true); + } + else { + return Future.all(arguments).then(function(args) { + return _invoke(stub, name, args, false); + }); + } + }; + } + + function setMethods(stub, obj, namespace, name, methods) { + if (obj[name] !== undefined) { return; } + obj[name] = {}; + if (typeof(methods) === s_string || methods.constructor === Object) { + methods = [methods]; + } + if (Array.isArray(methods)) { + for (var i = 0; i < methods.length; i++) { + var m = methods[i]; + if (typeof(m) === s_string) { + obj[name][m] = setFunction(stub, namespace + name + '_' + m); + } + else { + for (var n in m) { + setMethods(stub, obj[name], name + '_', n, m[n]); + } + } + } + } + } + + function setFunctions(stub, functions) { + for (var i = 0; i < functions.length; i++) { + var f = functions[i]; + if (typeof(f) === s_string) { + if (stub[f] === undefined) { + stub[f] = setFunction(stub, f); + } + } + else { + for (var name in f) { + setMethods(stub, stub, '', name, f[name]); + } + } + } + } + + function copyargs(src, dest) { + var n = Math.min(src.length, dest.length); + for (var i = 0; i < n; ++i) { dest[i] = src[i]; } + } + + function initContext(batch) { + if (batch) { + return { + mode: ResultMode.Normal, + byref: _byref, + simple: _simple, + onsuccess: undefined, + onerror: undefined, + useHarmonyMap: _useHarmonyMap, + client: self, + userdata: {} + }; + } + return { + mode: ResultMode.Normal, + byref: _byref, + simple: _simple, + timeout: _timeout, + retry: _retry, + idempotent: _idempotent, + failswitch: _failswitch, + oneway: false, + sync: false, + onsuccess: undefined, + onerror: undefined, + useHarmonyMap: _useHarmonyMap, + client: self, + userdata: {} + }; + } + + function getContext(stub, name, args, batch) { + var context = initContext(batch); + if (name in stub) { + var method = stub[name]; + for (var key in method) { + if (key in context) { + context[key] = method[key]; + } + } + } + var i = 0, n = args.length; + for (; i < n; ++i) { + if (typeof args[i] === s_function) { break; } + } + if (i === n) { return context; } + var extra = args.splice(i, n - i); + context.onsuccess = extra[0]; + n = extra.length; + for (i = 1; i < n; ++i) { + var arg = extra[i]; + switch (typeof arg) { + case s_function: + context.onerror = arg; break; + case s_boolean: + context.byref = arg; break; + case s_number: + context.mode = arg; break; + case s_object: + for (var k in arg) { + if (k in context) { + context[k] = arg[k]; + } + } + break; + } + } + return context; + } + + function encode(name, args, context) { + var stream = new BytesIO(); + stream.writeByte(Tags.TagCall); + var writer = new Writer(stream, context.simple); + writer.writeString(name); + if (args.length > 0 || context.byref) { + writer.reset(); + writer.writeList(args); + if (context.byref) { + writer.writeBoolean(true); + } + } + return stream; + } + + function __invoke(name, args, context, batch) { + if (_lock) { + return Future.promise(function(resolve, reject) { + _tasks.push({ + batch: batch, + name: name, + args: args, + context: context, + resolve: resolve, + reject: reject + }); + }); + } + if (batch) { + return multicall(name, args, context); + } + return call(name, args, context); + } + + function _invoke(stub, name, args, batch) { + return __invoke(name, args, getContext(stub, name, args, batch), batch); + } + + function errorHandling(name, error, context, reject) { + try { + if (context.onerror) { + context.onerror(name, error); + } + else { + _onerror(name, error); + } + reject(error); + } + catch (e) { + reject(e); + } + } + + function invokeHandler(name, args, context) { + var request = encode(name, args, context); + request.writeByte(Tags.TagEnd); + return Future.promise(function(resolve, reject) { + sendAndReceive(request.bytes, context, function(response) { + if (context.oneway) { + resolve(); + return; + } + var result = null; + var error = null; + try { + if (context.mode === ResultMode.RawWithEndTag) { + result = response; + } + else if (context.mode === ResultMode.Raw) { + result = response.subarray(0, response.byteLength - 1); + } + else { + var stream = new BytesIO(response); + var reader = new Reader(stream, false, context.useHarmonyMap); + var tag = stream.readByte(); + if (tag === Tags.TagResult) { + if (context.mode === ResultMode.Serialized) { + result = reader.readRaw(); + } + else { + result = reader.unserialize(); + } + tag = stream.readByte(); + if (tag === Tags.TagArgument) { + reader.reset(); + var _args = reader.readList(); + copyargs(_args, args); + tag = stream.readByte(); + } + } + else if (tag === Tags.TagError) { + error = new Error(reader.readString()); + tag = stream.readByte(); + } + if (tag !== Tags.TagEnd) { + error = new Error('Wrong Response:\r\n' + BytesIO.toString(response)); + } + } + } + catch (e) { + error = e; + } + if (error) { + reject(error); + } + else { + resolve(result); + } + }, reject); + }); + } + + function unlock(sync) { + return function() { + if (sync) { + _lock = false; + setImmediate(function(tasks) { + tasks.forEach(function(task) { + if ('settings' in task) { + endBatch(task.settings) + .then(task.resolve, task.reject); + } + else { + __invoke(task.name, task.args, task.context, task.batch).then(task.resolve, task.reject); + } + }); + }, _tasks); + _tasks = []; + } + }; + } + + function call(name, args, context) { + if (context.sync) { _lock = true; } + var promise = Future.promise(function(resolve, reject) { + _invokeHandler(name, args, context).then(function(result) { + try { + if (context.onsuccess) { + try { + context.onsuccess(result, args); + } + catch (e) { + if (context.onerror) { + context.onerror(name, e); + } + reject(e); + } + } + resolve(result); + } + catch (e) { + reject(e); + } + }, function(error) { + errorHandling(name, error, context, reject); + }); + }); + promise.whenComplete(unlock(context.sync)); + return promise; + } + + function multicall(name, args, context) { + return Future.promise(function(resolve, reject) { + _batches.push({ + args: args, + name: name, + context: context, + resolve: resolve, + reject: reject + }); + }); + } + + function getBatchContext(settings) { + var context = { + timeout: _timeout, + retry: _retry, + idempotent: _idempotent, + failswitch: _failswitch, + oneway: false, + sync: false, + client: self, + userdata: {} + }; + for (var k in settings) { + if (k in context) { + context[k] = settings[k]; + } + } + return context; + } + + function batchInvokeHandler(batches, context) { + var request = batches.reduce(function(stream, item) { + stream.write(encode(item.name, item.args, item.context)); + return stream; + }, new BytesIO()); + request.writeByte(Tags.TagEnd); + return Future.promise(function(resolve, reject) { + sendAndReceive(request.bytes, context, function(response) { + if (context.oneway) { + resolve(batches); + return; + } + var i = -1; + var stream = new BytesIO(response); + var reader = new Reader(stream, false); + var tag = stream.readByte(); + try { + while (tag !== Tags.TagEnd) { + var result = null; + var error = null; + var mode = batches[++i].context.mode; + if (mode >= ResultMode.Raw) { + result = new BytesIO(); + } + if (tag === Tags.TagResult) { + if (mode === ResultMode.Serialized) { + result = reader.readRaw(); + } + else if (mode >= ResultMode.Raw) { + result.writeByte(Tags.TagResult); + result.write(reader.readRaw()); + } + else { + reader.useHarmonyMap = batches[i].context.useHarmonyMap; + reader.reset(); + result = reader.unserialize(); + } + tag = stream.readByte(); + if (tag === Tags.TagArgument) { + if (mode >= ResultMode.Raw) { + result.writeByte(Tags.TagArgument); + result.write(reader.readRaw()); + } + else { + reader.reset(); + var _args = reader.readList(); + copyargs(_args, batches[i].args); + } + tag = stream.readByte(); + } + } + else if (tag === Tags.TagError) { + if (mode >= ResultMode.Raw) { + result.writeByte(Tags.TagError); + result.write(reader.readRaw()); + } + else { + reader.reset(); + error = new Error(reader.readString()); + } + tag = stream.readByte(); + } + if ([Tags.TagEnd, + Tags.TagResult, + Tags.TagError].indexOf(tag) < 0) { + reject(new Error('Wrong Response:\r\n' + BytesIO.toString(response))); + return; + } + if (mode >= ResultMode.Raw) { + if (mode === ResultMode.RawWithEndTag) { + result.writeByte(Tags.TagEnd); + } + batches[i].result = result.bytes; + } + else { + batches[i].result = result; + } + batches[i].error = error; + } + } + catch (e) { + reject(e); + return; + } + resolve(batches); + }, reject); + }); + } + + function beginBatch() { + _batch = true; + } + + function endBatch(settings) { + settings = settings || {}; + _batch = false; + if (_lock) { + return Future.promise(function(resolve, reject) { + _tasks.push({ + batch: true, + settings: settings, + resolve: resolve, + reject: reject + }); + }); + } + var batchSize = _batches.length; + if (batchSize === 0) { return Future.value([]); } + var context = getBatchContext(settings); + if (context.sync) { _lock = true; } + var batches = _batches; + _batches = []; + var promise = Future.promise(function(resolve, reject) { + _batchInvokeHandler(batches, context).then(function(batches) { + batches.forEach(function(i) { + if (i.error) { + errorHandling(i.name, i.error, i.context, i.reject); + } + else { + try { + if (i.context.onsuccess) { + try { + i.context.onsuccess(i.result, i.args); + } + catch (e) { + if (i.context.onerror) { + i.context.onerror(i.name, e); + } + i.reject(e); + } + } + i.resolve(i.result); + } + catch (e) { + i.reject(e); + } + } + delete i.context; + delete i.resolve; + delete i.reject; + }); + resolve(batches); + }, function(error) { + batches.forEach(function(i) { + if ('reject' in i) { + errorHandling(i.name, error, i.context, i.reject); + } + }); + reject(error); + }); + }); + promise.whenComplete(unlock(context.sync)); + return promise; + } + + function getOnError() { + return _onerror; + } + function setOnError(value) { + if (typeof(value) === s_function) { + _onerror = value; + } + } + function getUri() { + return _uri; + } + function getFailswitch() { + return _failswitch; + } + function setFailswitch(value) { + _failswitch = !!value; + } + function getTimeout() { + return _timeout; + } + function setTimeout(value) { + if (typeof(value) === 'number') { + _timeout = value | 0; + } + else { + _timeout = 0; + } + } + function getRetry() { + return _retry; + } + function setRetry(value) { + if (typeof(value) === 'number') { + _retry = value | 0; + } + else { + _retry = 0; + } + } + function getIdempotent() { + return _idempotent; + } + function setIdempotent(value) { + _idempotent = !!value; + } + function setKeepAlive(value) { + _keepAlive = !!value; + } + function getKeepAlive() { + return _keepAlive; + } + function getByRef() { + return _byref; + } + function setByRef(value) { + _byref = !!value; + } + function getSimpleMode() { + return _simple; + } + function setSimpleMode(value) { + _simple = !!value; + } + function getUseHarmonyMap() { + return _useHarmonyMap; + } + function setUseHarmonyMap(value) { + _useHarmonyMap = !!value; + } + function getFilter() { + if (_filters.length === 0) { + return null; + } + if (_filters.length === 1) { + return _filters[0]; + } + return _filters.slice(); + } + function setFilter(filter) { + _filters.length = 0; + if (Array.isArray(filter)) { + filter.forEach(function(filter) { + addFilter(filter); + }); + } + else { + addFilter(filter); + } + } + function addFilter(filter) { + if (filter && + typeof filter.inputFilter === 'function' && + typeof filter.outputFilter === 'function') { + _filters.push(filter); + } + } + function removeFilter(filter) { + var i = _filters.indexOf(filter); + if (i === -1) { + return false; + } + _filters.splice(i, 1); + return true; + } + function filters() { + return _filters; + } + function useService(uri, functions, create) { + if (create === undefined) { + if (typeof(functions) === s_boolean) { + create = functions; + functions = false; + } + if (!functions) { + if (typeof(uri) === s_boolean) { + create = uri; + uri = false; + } + else if (uri && uri.constructor === Object || + Array.isArray(uri)) { + functions = uri; + uri = false; + } + } + } + var stub = self; + if (create) { + stub = {}; + } + if (!uri && !_uri) { + return new Error('You should set server uri first!'); + } + if (uri) { + _uri = uri; + } + if (typeof(functions) === s_string || + (functions && functions.constructor === Object)) { + functions = [functions]; + } + if (!Array.isArray(functions)) { + setImmediate(initService, stub); + return _ready; + } + setFunctions(stub, functions); + _ready.resolve(stub); + return stub; + } + function invoke(name, args, onsuccess/*, onerror, settings*/) { + var argc = arguments.length; + if ((argc < 1) || (typeof name !== s_string)) { + throw new Error('name must be a string'); + } + if (argc === 1) { args = []; } + if (argc === 2) { + if (!Array.isArray(args)) { + var _args = []; + if (typeof args !== s_function) { + _args.push(noop); + } + _args.push(args); + args = _args; + } + } + if (argc > 2) { + if (typeof onsuccess !== s_function) { + args.push(noop); + } + for (var i = 2; i < argc; i++) { + args.push(arguments[i]); + } + } + return _invoke(self, name, args, _batch); + } + function ready(onComplete, onError) { + return _ready.then(onComplete, onError); + } + function getTopic(name, id, create) { + if (_topics[name]) { + var topics = _topics[name]; + if (topics[id]) { + return topics[id]; + } + return null; + } + if (create) { + _topics[name] = Object.create(null); + } + return null; + } + // subscribe(name, callback, timeout) + // subscribe(name, id, callback, timeout) + function subscribe(name, id, callback, timeout) { + if (typeof name !== s_string) { + throw new TypeError('topic name must be a string.'); + } + if (id === undefined || id === null) { + if (typeof callback === s_function) { + id = callback; + } + else { + throw new TypeError('callback must be a function.'); + } + } + if (typeof id === s_function) { + timeout = callback; + callback = id; + if (_id === null) { + _id = autoId(); + } + _id.then(function(id) { + subscribe(name, id, callback, timeout); + }); + return; + } + if (typeof callback !== s_function) { + throw new TypeError('callback must be a function.'); + } + if (Future.isPromise(id)) { + id.then(function(id) { + subscribe(name, id, callback, timeout); + }); + return; + } + if (timeout === undefined) { timeout = _timeout; } + var topic = getTopic(name, id, true); + if (topic === null) { + var cb = function() { + _invoke(self, name, [id, topic.handler, cb, { + idempotent: true, + failswitch: false, + timeout: timeout + }], false); + }; + topic = { + handler: function(result) { + var topic = getTopic(name, id, false); + if (topic) { + if (result !== null) { + var callbacks = topic.callbacks; + for (var i = 0, n = callbacks.length; i < n; ++i) { + try { + callbacks[i](result); + } + catch (e) {} + } + } + if (getTopic(name, id, false) !== null) { cb(); } + } + }, + callbacks: [callback] + }; + _topics[name][id] = topic; + cb(); + } + else if (topic.callbacks.indexOf(callback) < 0) { + topic.callbacks.push(callback); + } + } + function delTopic(topics, id, callback) { + if (topics) { + if (typeof callback === s_function) { + var topic = topics[id]; + if (topic) { + var callbacks = topic.callbacks; + var p = callbacks.indexOf(callback); + if (p >= 0) { + callbacks[p] = callbacks[callbacks.length - 1]; + callbacks.length--; + } + if (callbacks.length === 0) { + delete topics[id]; + } + } + } + else { + delete topics[id]; + } + } + } + // unsubscribe(name) + // unsubscribe(name, callback) + // unsubscribe(name, id) + // unsubscribe(name, id, callback) + function unsubscribe(name, id, callback) { + if (typeof name !== s_string) { + throw new TypeError('topic name must be a string.'); + } + if (id === undefined || id === null) { + if (typeof callback === s_function) { + id = callback; + } + else { + delete _topics[name]; + return; + } + } + if (typeof id === s_function) { + callback = id; + id = null; + } + if (id === null) { + if (_id === null) { + if (_topics[name]) { + var topics = _topics[name]; + for (id in topics) { + delTopic(topics, id, callback); + } + } + } + else { + _id.then(function(id) { + unsubscribe(name, id, callback); + }); + } + } + else if (Future.isPromise(id)) { + id.then(function(id) { + unsubscribe(name, id, callback); + }); + } + else { + delTopic(_topics[name], id, callback); + } + } + function getId() { + return _id; + } + function autoId() { + return _invoke(self, '#', [], false); + } + autoId.sync = true; + autoId.idempotent = true; + autoId.failswitch = true; + function addInvokeHandler(handler) { + _invokeHandlers.push(handler); + _invokeHandler = _invokeHandlers.reduceRight( + function(next, handler) { + return function(name, args, context) { + return Future.sync(function() { + return handler(name, args, context, next); + }); + }; + }, invokeHandler); + } + function addBatchInvokeHandler(handler) { + _batchInvokeHandlers.push(handler); + _batchInvokeHandler = _batchInvokeHandlers.reduceRight( + function(next, handler) { + return function(batches, context) { + return Future.sync(function() { + return handler(batches, context, next); + }); + }; + }, batchInvokeHandler); + } + function addBeforeFilterHandler(handler) { + _beforeFilterHandlers.push(handler); + _beforeFilterHandler = _beforeFilterHandlers.reduceRight( + function(next, handler) { + return function(request, context) { + return Future.sync(function() { + return handler(request, context, next); + }); + }; + }, beforeFilterHandler); + } + function addAfterFilterHandler(handler) { + _afterFilterHandlers.push(handler); + _afterFilterHandler = _afterFilterHandlers.reduceRight( + function(next, handler) { + return function(request, context) { + return Future.sync(function() { + return handler(request, context, next); + }); + }; + }, afterFilterHandler); + } + function use(handler) { + addInvokeHandler(handler); + return self; + } + var batch = Object.create(null, { + begin: { value: beginBatch }, + end: { value: endBatch }, + use: { value: function(handler) { + addBatchInvokeHandler(handler); + return batch; + } } + }); + var beforeFilter = Object.create(null, { + use: { value: function(handler) { + addBeforeFilterHandler(handler); + return beforeFilter; + } } + }); + var afterFilter = Object.create(null, { + use: { value: function(handler) { + addAfterFilterHandler(handler); + return afterFilter; + } } + }); + Object.defineProperties(this, { + '#': { value: autoId }, + onerror: { get: getOnError, set: setOnError }, + uri: { get: getUri }, + id: { get: getId }, + failswitch: { get: getFailswitch, set: setFailswitch }, + timeout: { get: getTimeout, set: setTimeout }, + retry: { get: getRetry, set: setRetry }, + idempotent: { get: getIdempotent, set: setIdempotent }, + keepAlive: { get: getKeepAlive, set: setKeepAlive }, + byref: { get: getByRef, set: setByRef }, + simple: { get: getSimpleMode, set: setSimpleMode }, + useHarmonyMap: { get: getUseHarmonyMap, set: setUseHarmonyMap }, + filter: { get: getFilter, set: setFilter }, + addFilter: { value: addFilter }, + removeFilter: { value: removeFilter }, + filters: { get: filters }, + useService: { value: useService }, + invoke: { value: invoke }, + ready: { value: ready }, + subscribe: { value: subscribe }, + unsubscribe: { value: unsubscribe }, + use: { value: use }, + batch: { value: batch }, + beforeFilter: { value: beforeFilter }, + afterFilter: { value: afterFilter } + }); + /* function constructor */ { + if ((settings) && (typeof settings === s_object)) { + ['failswitch', 'timeout', 'retry', 'idempotent', + 'keepAlive', 'byref', 'simple','useHarmonyMap', + 'filter'].forEach(function(key) { + if (key in settings) { + self[key] = settings[key]; + } + }); + } + if (typeof(uri) === s_string) { + _uris = [uri]; + _index = 0; + useService(uri, functions); + } + else if (Array.isArray(uri)) { + _uris = uri; + _index = Math.floor(Math.random() * _uris.length); + useService(_uris[_index], functions); + } + } + } + + function checkuri(uri) { + var parser = document.createElement('a'); + parser.href = uri; + var protocol = parser.protocol; + if (protocol === 'http:' || + protocol === 'https:' || + protocol === 'tcp:' || + protocol === 'tcp4:'|| + protocol === 'tcp6:' || + protocol === 'tcps:' || + protocol === 'tcp4s:' || + protocol === 'tcp6s:' || + protocol === 'tls:' || + protocol === 'ws:' || + protocol === 'wss:') { + return; + } + throw new Error('The ' + protocol + ' client isn\'t implemented.'); + } + + function create(uri, functions, settings) { + try { + return global.hprose.HttpClient.create(uri, functions, settings); + } + catch(e) {} + try { + return global.hprose.TcpClient.create(uri, functions, settings); + } + catch(e) {} + try { + return global.hprose.WebSocketClient.create(uri, functions, settings); + } + catch(e) {} + if (typeof uri === 'string') { + checkuri(uri); + } + else if (Array.isArray(uri)) { + uri.forEach(function(uri) { checkuri(uri); }); + throw new Error('Not support multiple protocol.'); + } + throw new Error('You should set server uri first!'); + } + + Object.defineProperty(Client, 'create', { value: create }); + + global.hprose.Client = Client; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * HttpClient.js * + * * + * hprose http client for HTML5. * + * * + * LastModified: Jul 26, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Client = global.hprose.Client; + var Future = global.hprose.Future; + var BytesIO = global.hprose.BytesIO; + var TimeoutError = global.TimeoutError; + var localfile = (global.location !== undefined && global.location.protocol === 'file:'); + var corsSupport = (!localfile && 'withCredentials' in new XMLHttpRequest()); + + function noop(){} + + function HttpClient(uri, functions, settings) { + if (this.constructor !== HttpClient) { + return new HttpClient(uri, functions, settings); + } + Client.call(this, uri, functions, settings); + var _header = Object.create(null); + var _onreqprogress = noop; + var _onresprogress = noop; + + var self = this; + + function xhrPost(request, env) { + var future = new Future(); + var xhr = new XMLHttpRequest(); + xhr.open('POST', self.uri, true); + if (corsSupport) { + xhr.withCredentials = 'true'; + } + xhr.responseType = 'arraybuffer'; + for (var name in _header) { + xhr.setRequestHeader(name, _header[name]); + } + xhr.onload = function() { + xhr.onload = noop; + if (xhr.status) { + if (xhr.status === 200) { + future.resolve(new Uint8Array(xhr.response)); + } + else { + future.reject(new Error(xhr.status + ':' + xhr.statusText)); + } + } + }; + xhr.onerror = function() { + future.reject(new Error('error')); + }; + if (xhr.upload !== undefined) { + xhr.upload.onprogress = _onreqprogress; + } + xhr.onprogress = _onresprogress; + if (env.timeout > 0) { + future = future.timeout(env.timeout).catchError(function(e) { + xhr.onload = noop; + xhr.onerror = noop; + xhr.abort(); + throw e; + }, + function(e) { + return e instanceof TimeoutError; + }); + } + if (request.constructor === String || ArrayBuffer.isView) { + xhr.send(request); + } + else if (request.buffer.slice) { + xhr.send(request.buffer.slice(0, request.length)); + } + else { + var buf = new Uint8Array(request.length); + buf.set(request); + xhr.send(buf.buffer); + } + return future; + } + + function apiPost(request, env) { + var future = new Future(); + global.api.ajax({ + url: self.uri(), + method: 'post', + data: { body: BytesIO.toString(request) }, + timeout: env.timeout, + dataType: 'text', + headers: _header, + certificate: self.certificate + }, function(ret, err) { + if (ret) { + future.resolve((new BytesIO(ret)).takeBytes()); + } + else { + future.reject(new Error(err.msg)); + } + }); + return future; + } + + function sendAndReceive(request, env) { + var apicloud = (typeof(global.api) !== "undefined" && + typeof(global.api.ajax) !== "undefined"); + var future = apicloud ? apiPost(request, env) : + xhrPost(request, env); + if (env.oneway) { future.resolve(); } + return future; + } + + function setOnRequestProgress(value) { + if (typeof(value) === 'function') { + _onreqprogress = value; + } + } + function getOnRequestProgress() { + return _onreqprogress; + } + function setOnResponseProgress(value) { + if (typeof(value) === 'function') { + _onresprogress = value; + } + } + function getOnResponseProgress() { + return _onresprogress; + } + function setHeader(name, value) { + if (name.toLowerCase() !== 'content-type' && + name.toLowerCase() !== 'content-length') { + if (value) { + _header[name] = value; + } + else { + delete _header[name]; + } + } + } + Object.defineProperties(this, { + onprogress: { get: getOnRequestProgress, set: setOnRequestProgress }, + onRequestProgress: { get: getOnRequestProgress, set: setOnRequestProgress }, + onResponseProgress: { get: getOnResponseProgress, set: setOnResponseProgress }, + setHeader: { value: setHeader }, + sendAndReceive: { value: sendAndReceive } + }); + } + + function checkuri(uri) { + var parser = document.createElement('a'); + parser.href = uri; + if (parser.protocol === 'http:' || + parser.protocol === 'https:') { + return; + } + throw new Error('This client desn\'t support ' + parser.protocol + ' scheme.'); + } + + function create(uri, functions, settings) { + if (typeof uri === 'string') { + checkuri(uri); + } + else if (Array.isArray(uri)) { + uri.forEach(function(uri) { checkuri(uri); }); + } + else { + throw new Error('You should set server uri first!'); + } + return new HttpClient(uri, functions, settings); + } + + Object.defineProperty(HttpClient, 'create', { value: create }); + + global.hprose.HttpClient = HttpClient; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * WebSocketClient.js * + * * + * hprose websocket client for HTML5. * + * * + * LastModified: Jul 14, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var BytesIO = global.hprose.BytesIO; + var Client = global.hprose.Client; + var Future = global.hprose.Future; + var TimeoutError = global.TimeoutError; + + var WebSocket = global.WebSocket || global.MozWebSocket; + + function noop(){} + function WebSocketClient(uri, functions, settings) { + if (typeof(WebSocket) === "undefined") { + throw new Error('WebSocket is not supported by this browser.'); + } + if (this.constructor !== WebSocketClient) { + return new WebSocketClient(uri, functions, settings); + } + + Client.call(this, uri, functions, settings); + + var _id = 0; + var _count = 0; + var _futures = []; + var _requests = []; + var _ready = null; + var ws = null; + + var self = this; + + function getNextId() { + return (_id < 0x7fffffff) ? ++_id : _id = 0; + } + function send(id, request) { + var bytes = new BytesIO(); + bytes.writeInt32BE(id); + if (request.constructor === String) { + bytes.writeString(request); + } + else { + bytes.write(request); + } + var message = bytes.bytes; + if (ArrayBuffer.isView) { + ws.send(message); + } + else if (message.buffer.slice) { + ws.send(message.buffer.slice(0, message.length)); + } + else { + ws.send(message.buffer); + } + } + function onopen(e) { + _ready.resolve(e); + } + function onmessage(e) { + var bytes = new BytesIO(e.data); + var id = bytes.readInt32BE(); + var future = _futures[id]; + delete _futures[id]; + if (future !== undefined) { + --_count; + future.resolve(bytes.read(bytes.length - 4)); + } + if ((_count < 100) && (_requests.length > 0)) { + ++_count; + var request = _requests.pop(); + _ready.then(function() { send(request[0], request[1]); }); + } + if (_count === 0 && !self.keepAlive) { + close(); + } + } + function onclose(e) { + _futures.forEach(function(future, id) { + future.reject(new Error(e.code + ':' + e.reason)); + delete _futures[id]; + }); + _count = 0; + ws = null; + } + function connect() { + _ready = new Future(); + ws = new WebSocket(self.uri); + ws.binaryType = 'arraybuffer'; + ws.onopen = onopen; + ws.onmessage = onmessage; + ws.onerror = noop; + ws.onclose = onclose; + } + function sendAndReceive(request, env) { + if (ws === null || + ws.readyState === WebSocket.CLOSING || + ws.readyState === WebSocket.CLOSED) { + connect(); + } + var id = getNextId(); + var future = new Future(); + _futures[id] = future; + if (env.timeout > 0) { + future = future.timeout(env.timeout).catchError(function(e) { + delete _futures[id]; + --_count; + throw e; + }, + function(e) { + return e instanceof TimeoutError; + }); + } + if (_count < 100) { + ++_count; + _ready.then(function() { send(id, request); }); + } + else { + _requests.push([id, request]); + } + if (env.oneway) { future.resolve(); } + return future; + } + function close() { + if (ws !== null) { + ws.onopen = noop; + ws.onmessage = noop; + ws.onclose = noop; + ws.close(); + } + } + + Object.defineProperties(this, { + sendAndReceive: { value: sendAndReceive }, + close: { value: close } + }); + } + + function checkuri(uri) { + var parser = document.createElement('a'); + parser.href = uri; + if (parser.protocol === 'ws:' || + parser.protocol === 'wss:') { + return; + } + throw new Error('This client desn\'t support ' + parser.protocol + ' scheme.'); + } + + function create(uri, functions, settings) { + if (typeof uri === 'string') { + checkuri(uri); + } + else if (Array.isArray(uri)) { + uri.forEach(function(uri) { checkuri(uri); }); + } + else { + throw new Error('You should set server uri first!'); + } + return new WebSocketClient(uri, functions, settings); + } + + Object.defineProperty(WebSocketClient, 'create', { value: create }); + + global.hprose.WebSocketClient = WebSocketClient; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * ChromeTcpSocket.js * + * * + * chrome tcp socket for JavaScript. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Future = global.hprose.Future; + + function noop(){} + + var socketPool = {}; + var socketManager = null; + + function receiveListener(info) { + var socket = socketPool[info.socketId]; + socket.onreceive(info.data); + } + + function receiveErrorListener(info) { + var socket = socketPool[info.socketId]; + socket.onerror(info.resultCode); + socket.destroy(); + } + + function ChromeTcpSocket() { + if (socketManager === null) { + socketManager = global.chrome.sockets.tcp; + socketManager.onReceive.addListener(receiveListener); + socketManager.onReceiveError.addListener(receiveErrorListener); + } + this.socketId = new Future(); + this.connected = false; + this.timeid = undefined; + this.onclose = noop; + this.onconnect = noop; + this.onreceive = noop; + this.onerror = noop; + } + + Object.defineProperties(ChromeTcpSocket.prototype, { + connect: { value: function(address, port, options) { + var self = this; + socketManager.create({ persistent: options && options.persistent }, function(createInfo) { + if (options) { + if ('noDelay' in options) { + socketManager.setNoDelay(createInfo.socketId, options.noDelay, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + }); + } + if ('keepAlive' in options) { + socketManager.setKeepAlive(createInfo.socketId, options.keepAlive, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + }); + } + } + if (options && options.tls) { + socketManager.setPaused(createInfo.socketId, true, function() { + socketManager.connect(createInfo.socketId, address, port, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + else { + socketManager.secure(createInfo.socketId, function(secureResult) { + if (secureResult !== 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + else { + socketManager.setPaused(createInfo.socketId, false, function() { + self.socketId.resolve(createInfo.socketId); + }); + } + }); + } + }); + }); + } + else { + socketManager.connect(createInfo.socketId, address, port, function(result) { + if (result < 0) { + self.socketId.reject(result); + socketManager.disconnect(createInfo.socketId); + socketManager.close(createInfo.socketId); + self.onclose(); + } + else { + self.socketId.resolve(createInfo.socketId); + } + }); + } + }); + this.socketId.then(function(socketId) { + socketPool[socketId] = self; + self.connected = true; + self.onconnect(socketId); + }, function(reason) { + self.onerror(reason); + }); + } }, + send: { value: function(data) { + var self = this; + var promise = new Future(); + this.socketId.then(function(socketId) { + socketManager.send(socketId, data, function(sendInfo) { + if (sendInfo.resultCode < 0) { + self.onerror(sendInfo.resultCode); + promise.reject(sendInfo.resultCode); + self.destroy(); + } + else { + promise.resolve(sendInfo.bytesSent); + } + }); + }); + return promise; + } }, + destroy: { value: function() { + var self = this; + this.connected = false; + this.socketId.then(function(socketId) { + socketManager.disconnect(socketId); + socketManager.close(socketId); + delete socketPool[socketId]; + self.onclose(); + }); + } }, + ref: { value: function() { + this.socketId.then(function(socketId) { + socketManager.setPaused(socketId, false); + }); + } }, + unref: { value: function() { + this.socketId.then(function(socketId) { + socketManager.setPaused(socketId, true); + }); + } }, + clearTimeout: { value: function() { + if (this.timeid !== undefined) { + global.clearTimeout(this.timeid); + } + } }, + setTimeout: { value: function(timeout, fn) { + this.clearTimeout(); + this.timeid = global.setTimeout(fn, timeout); + } } + }); + + global.hprose.ChromeTcpSocket = ChromeTcpSocket; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * APICloudTcpSocket.js * + * * + * APICloud tcp socket for HTML5. * + * * + * LastModified: Mar 8, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var Future = global.hprose.Future; + var atob = global.atob; + var btoa = global.btoa; + var toUint8Array = global.hprose.toUint8Array; + var toBinaryString = global.hprose.toBinaryString; + + function noop(){} + + var socketPool = {}; + var socketManager = null; + + function APICloudTcpSocket() { + if (socketManager === null) { + socketManager = global.api.require('socketManager'); + } + this.socketId = new Future(); + this.connected = false; + this.timeid = undefined; + this.onclose = noop; + this.onconnect = noop; + this.onreceive = noop; + this.onerror = noop; + } + + Object.defineProperties(APICloudTcpSocket.prototype, { + connect: { value: function(address, port, options) { + var self = this; + socketManager.createSocket({ + type: 'tcp', + host: address, + port: port, + timeout: options.timeout, + returnBase64: true + }, + function(ret/*, err*/) { + if (ret) { + switch(ret.state) { + case 101: break; + case 102: self.socketId.resolve(ret.sid); break; + case 103: self.onreceive(toUint8Array(atob(ret.data.replace(/\s+/g, '')))); break; + case 201: self.socketId.reject(new Error('Create TCP socket failed')); break; + case 202: self.socketId.reject(new Error('TCP connection failed')); break; + case 203: self.onclose(); self.onerror(new Error('Abnormal disconnect connection')); break; + case 204: self.onclose(); break; + case 205: self.onclose(); self.onerror(new Error('Unknown error')); break; + } + } + }); + this.socketId.then(function(socketId) { + socketPool[socketId] = self; + self.connected = true; + self.onconnect(socketId); + }, function(reason) { + self.onerror(reason); + }); + } }, + send: { value: function(data) { + var self = this; + var promise = new Future(); + this.socketId.then(function(socketId) { + socketManager.write({ + sid: socketId, + data: btoa(toBinaryString(data)), + base64: true + }, + function(ret, err) { + if (ret.status) { + promise.resolve(); + } + else { + self.onerror(new Error(err.msg)); + promise.reject(err.msg); + self.destroy(); + } + }); + }); + return promise; + } }, + destroy: { value: function() { + var self = this; + this.connected = false; + this.socketId.then(function(socketId) { + socketManager.closeSocket({ + sid: socketId + }, + function(ret, err) { + if (!ret.status) { + self.onerror(new Error(err.msg)); + } + }); + delete socketPool[socketId]; + //self.onclose(); + }); + } }, + ref: { value: noop }, + unref: { value: noop }, + clearTimeout: { value: function() { + if (this.timeid !== undefined) { + global.clearTimeout(this.timeid); + } + } }, + setTimeout: { value: function(timeout, fn) { + this.clearTimeout(); + this.timeid = global.setTimeout(fn, timeout); + } } + }); + + global.hprose.APICloudTcpSocket = APICloudTcpSocket; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ +/**********************************************************\ + * * + * TcpClient.js * + * * + * hprose tcp client for HTML5. * + * * + * LastModified: Jul 14, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global, undefined) { + 'use strict'; + + var ChromeTcpSocket = global.hprose.ChromeTcpSocket; + var APICloudTcpSocket = global.hprose.APICloudTcpSocket; + var Client = global.hprose.Client; + var BytesIO = global.hprose.BytesIO; + var Future = global.hprose.Future; + var TimeoutError = global.TimeoutError; + + function noop(){} + + function setReceiveHandler(socket, onreceive) { + socket.onreceive = function(data) { + if (!('receiveEntry' in socket)) { + socket.receiveEntry = { + stream: new BytesIO(), + headerLength: 4, + dataLength: -1, + id: null + }; + } + var entry = socket.receiveEntry; + var stream = entry.stream; + var headerLength = entry.headerLength; + var dataLength = entry.dataLength; + var id = entry.id; + stream.write(data); + while (true) { + if ((dataLength < 0) && (stream.length >= headerLength)) { + dataLength = stream.readInt32BE(); + if ((dataLength & 0x80000000) !== 0) { + dataLength &= 0x7fffffff; + headerLength = 8; + } + } + if ((headerLength === 8) && (id === null) && (stream.length >= headerLength)) { + id = stream.readInt32BE(); + } + if ((dataLength >= 0) && ((stream.length - headerLength) >= dataLength)) { + onreceive(stream.read(dataLength), id); + headerLength = 4; + id = null; + stream.trunc(); + dataLength = -1; + } + else { + break; + } + } + entry.stream = stream; + entry.headerLength = headerLength; + entry.dataLength = dataLength; + entry.id = id; + }; + } + + function TcpTransporter(client) { + if (client) { + this.client = client; + this.uri = this.client.uri; + this.size = 0; + this.pool = []; + this.requests = []; + } + } + + Object.defineProperties(TcpTransporter.prototype, { + create: { value: function() { + var parser = document.createElement('a'); + parser.href = this.uri; + var protocol = parser.protocol; + // HTMLAnchorElement can't parse TCP protocol + // replace to HTTP can be correctly resolved. + parser.protocol = "http:"; + var address = parser.hostname; + var port = parseInt(parser.port, 10); + var tls; + if (protocol === 'tcp:' || + protocol === 'tcp4:' || + protocol === 'tcp6:') { + tls = false; + } + else if (protocol === 'tcps:' || + protocol === 'tcp4s:' || + protocol === 'tcp6s:' || + protocol === 'tls:') { + tls = true; + } + else { + throw new Error('Unsupported ' + protocol + ' protocol!'); + } + var conn; + if (global.chrome && global.chrome.sockets && global.chrome.sockets.tcp) { + conn = new ChromeTcpSocket(); + } + else if (global.api && global.api.require) { + conn = new APICloudTcpSocket(); + } + else { + throw new Error('TCP Socket is not supported by this browser or platform.'); + } + var self = this; + conn.connect(address, port, { + persistent: true, + tls: tls, + timeout: this.client.timeout, + noDelay: this.client.noDelay, + keepAlive: this.client.keepAlive + }); + conn.onclose = function() { --self.size; }; + ++this.size; + return conn; + } } + }); + + function FullDuplexTcpTransporter(client) { + TcpTransporter.call(this, client); + } + + FullDuplexTcpTransporter.prototype = Object.create( + TcpTransporter.prototype, { + fetch: { value: function() { + var pool = this.pool; + while (pool.length > 0) { + var conn = pool.pop(); + if (conn.connected) { + if (conn.count === 0) { + conn.clearTimeout(); + conn.ref(); + } + return conn; + } + } + return null; + } }, + init: { value: function(conn) { + var self = this; + conn.count = 0; + conn.futures = {}; + conn.timeoutIds = {}; + setReceiveHandler(conn, function(data, id) { + var future = conn.futures[id]; + if (future) { + self.clean(conn, id); + if (conn.count === 0) { + self.recycle(conn); + } + future.resolve(data); + } + }); + conn.onerror = function (e) { + var futures = conn.futures; + for (var id in futures) { + var future = futures[id]; + self.clean(conn, id); + future.reject(e); + } + }; + } }, + recycle: { value: function(conn) { + conn.unref(); + conn.setTimeout(this.client.poolTimeout, function() { + conn.destroy(); + }); + } }, + clean: { value: function(conn, id) { + if (conn.timeoutIds[id] !== undefined) { + global.clearTimeout(conn.timeoutIds[id]); + delete conn.timeoutIds[id]; + } + delete conn.futures[id]; + --conn.count; + this.sendNext(conn); + } }, + sendNext: { value: function(conn) { + if (conn.count < 10) { + if (this.requests.length > 0) { + var request = this.requests.pop(); + request.push(conn); + this.send.apply(this, request); + } + else { + if (this.pool.lastIndexOf(conn) < 0) { + this.pool.push(conn); + } + } + } + } }, + send: { value: function(request, future, id, env, conn) { + var self = this; + var timeout = env.timeout; + if (timeout > 0) { + conn.timeoutIds[id] = global.setTimeout(function() { + self.clean(conn, id); + if (conn.count === 0) { + self.recycle(conn); + } + future.reject(new TimeoutError('timeout')); + }, timeout); + } + conn.count++; + conn.futures[id] = future; + + var len = request.length; + var buf = new BytesIO(8 + len); + buf.writeInt32BE(len | 0x80000000); + buf.writeInt32BE(id); + buf.write(request); + conn.send(buf.buffer).then(function() { + self.sendNext(conn); + }); + } }, + getNextId: { value: function() { + return (this.nextid < 0x7fffffff) ? ++this.nextid : this.nextid = 0; + } }, + sendAndReceive: { value: function(request, future, env) { + var conn = this.fetch(); + var id = this.getNextId(); + if (conn) { + this.send(request, future, id, env, conn); + } + else if (this.size < this.client.maxPoolSize) { + conn = this.create(); + conn.onerror = function(e) { + future.reject(e); + }; + var self = this; + conn.onconnect = function() { + self.init(conn); + self.send(request, future, id, env, conn); + }; + } + else { + this.requests.push([request, future, id, env]); + } + } } + }); + + FullDuplexTcpTransporter.prototype.constructor = TcpTransporter; + + function HalfDuplexTcpTransporter(client) { + TcpTransporter.call(this, client); + } + + HalfDuplexTcpTransporter.prototype = Object.create( + TcpTransporter.prototype, { + fetch: { value: function() { + var pool = this.pool; + while (pool.length > 0) { + var conn = pool.pop(); + if (conn.connected) { + conn.clearTimeout(); + conn.ref(); + return conn; + } + } + return null; + } }, + recycle: { value: function(conn) { + if (this.pool.lastIndexOf(conn) < 0) { + conn.unref(); + conn.setTimeout(this.client.poolTimeout, function() { + conn.destroy(); + }); + this.pool.push(conn); + } + } }, + clean: { value: function(conn) { + conn.onreceive = noop; + conn.onerror = noop; + if (conn.timeoutId !== undefined) { + global.clearTimeout(conn.timeoutId); + delete conn.timeoutId; + } + } }, + sendNext: { value: function(conn) { + if (this.requests.length > 0) { + var request = this.requests.pop(); + request.push(conn); + this.send.apply(this, request); + } + else { + this.recycle(conn); + } + } }, + send: { value: function(request, future, env, conn) { + var self = this; + var timeout = env.timeout; + if (timeout > 0) { + conn.timeoutId = global.setTimeout(function() { + self.clean(conn); + self.recycle(conn); + future.reject(new TimeoutError('timeout')); + }, timeout); + } + setReceiveHandler(conn, function(data) { + self.clean(conn); + self.sendNext(conn); + future.resolve(data); + }); + conn.onerror = function(e) { + self.clean(conn); + future.reject(e); + }; + + var len = request.length; + var buf = new BytesIO(4 + len); + buf.writeInt32BE(len); + buf.write(request); + conn.send(buf.buffer); + } }, + sendAndReceive: { value: function(request, future, env) { + var conn = this.fetch(); + if (conn) { + this.send(request, future, env, conn); + } + else if (this.size < this.client.maxPoolSize) { + conn = this.create(); + var self = this; + conn.onerror = function(e) { + future.reject(e); + }; + conn.onconnect = function() { + self.send(request, future, env, conn); + }; + } + else { + this.requests.push([request, future, env]); + } + } } + }); + + HalfDuplexTcpTransporter.prototype.constructor = TcpTransporter; + + function TcpClient(uri, functions, settings) { + if (this.constructor !== TcpClient) { + return new TcpClient(uri, functions, settings); + } + Client.call(this, uri, functions, settings); + + var self = this; + var _noDelay = true; + var _fullDuplex = false; + var _maxPoolSize = 10; + var _poolTimeout = 30000; + var fdtrans = null; + var hdtrans = null; + + function getNoDelay() { + return _noDelay; + } + + function setNoDelay(value) { + _noDelay = !!value; + } + + function getFullDuplex() { + return _fullDuplex; + } + + function setFullDuplex(value) { + _fullDuplex = !!value; + } + + function getMaxPoolSize() { + return _maxPoolSize; + } + + function setMaxPoolSize(value) { + if (typeof(value) === 'number') { + _maxPoolSize = value | 0; + if (_maxPoolSize < 1) { + _maxPoolSize = 10; + } + } + else { + _maxPoolSize = 10; + } + } + + function getPoolTimeout() { + return _poolTimeout; + } + + function setPoolTimeout(value) { + if (typeof(value) === 'number') { + _poolTimeout = value | 0; + } + else { + _poolTimeout = 0; + } + } + + function sendAndReceive(request, env) { + var future = new Future(); + if (_fullDuplex) { + if ((fdtrans === null) || (fdtrans.uri !== self.uri)) { + fdtrans = new FullDuplexTcpTransporter(self); + } + fdtrans.sendAndReceive(request, future, env); + } + else { + if ((hdtrans === null) || (hdtrans.uri !== self.uri)) { + hdtrans = new HalfDuplexTcpTransporter(self); + } + hdtrans.sendAndReceive(request, future, env); + } + if (env.oneway) { future.resolve(); } + return future; + } + + Object.defineProperties(this, { + noDelay: { get: getNoDelay, set: setNoDelay }, + fullDuplex: { get: getFullDuplex, set: setFullDuplex }, + maxPoolSize: { get: getMaxPoolSize, set: setMaxPoolSize }, + poolTimeout: { get: getPoolTimeout, set: setPoolTimeout }, + sendAndReceive: { value: sendAndReceive } + }); + } + + function checkuri(uri) { + var parser = document.createElement('a'); + parser.href = uri; + var protocol = parser.protocol; + if (protocol === 'tcp:' || + protocol === 'tcp4:'|| + protocol === 'tcp6:' || + protocol === 'tcps:' || + protocol === 'tcp4s:' || + protocol === 'tcp6s:' || + protocol === 'tls:') { + return; + } + throw new Error('This client desn\'t support ' + protocol + ' scheme.'); + } + + function create(uri, functions, settings) { + if (typeof uri === 'string') { + checkuri(uri); + } + else if (Array.isArray(uri)) { + uri.forEach(function(uri) { checkuri(uri); }); + } + else { + throw new Error('You should set server uri first!'); + } + return new TcpClient(uri, functions, settings); + } + + Object.defineProperty(TcpClient, 'create', { value: create }); + + global.hprose.TcpClient = TcpClient; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * JSONRPCClientFilter.js * + * * + * jsonrpc client filter for JavaScript. * + * * + * LastModified: Feb 23, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (global) { + 'use strict'; + + var Tags = global.hprose.Tags; + var BytesIO = global.hprose.BytesIO; + var Writer = global.hprose.Writer; + var Reader = global.hprose.Reader; + var JSON = global.JSON; + + var s_id = 1; + + function JSONRPCClientFilter(version) { + this.version = version || '2.0'; + } + + JSONRPCClientFilter.prototype.inputFilter = function inputFilter(data/*, context*/) { + var json = BytesIO.toString(data); + if (json.charAt(0) === '{') { + json = '[' + json + ']'; + } + var responses = JSON.parse(json); + var stream = new BytesIO(); + var writer = new Writer(stream, true); + for (var i = 0, n = responses.length; i < n; ++i) { + var response = responses[i]; + if (response.error) { + stream.writeByte(Tags.TagError); + writer.writeString(response.error.message); + } + else { + stream.writeByte(Tags.TagResult); + writer.serialize(response.result); + } + } + stream.writeByte(Tags.TagEnd); + return stream.bytes; + }; + + JSONRPCClientFilter.prototype.outputFilter = function outputFilter(data/*, context*/) { + var requests = []; + var stream = new BytesIO(data); + var reader = new Reader(stream, false, false); + var tag = stream.readByte(); + do { + var request = {}; + if (tag === Tags.TagCall) { + request.method = reader.readString(); + tag = stream.readByte(); + if (tag === Tags.TagList) { + request.params = reader.readListWithoutTag(); + tag = stream.readByte(); + } + if (tag === Tags.TagTrue) { + tag = stream.readByte(); + } + } + if (this.version === '1.1') { + request.version = '1.1'; + } + else if (this.version === '2.0') { + request.jsonrpc = '2.0'; + } + request.id = s_id++; + requests.push(request); + } while (tag === Tags.TagCall); + if (requests.length > 1) { + return JSON.stringify(requests); + } + return JSON.stringify(requests[0]); + }; + + global.hprose.JSONRPCClientFilter = JSONRPCClientFilter; + +})(this); + +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * Loader.js * + * * + * hprose CommonJS/AMD/CMD loader for HTML5. * + * * + * LastModified: Mar 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +/* global define, module */ +(function (global) { + 'use strict'; + + global.hprose.common = { + Completer: global.hprose.Completer, + Future: global.hprose.Future, + ResultMode: global.hprose.ResultMode + }; + + global.hprose.io = { + BytesIO: global.hprose.BytesIO, + ClassManager: global.hprose.ClassManager, + Tags: global.hprose.Tags, + RawReader: global.hprose.RawReader, + Reader: global.hprose.Reader, + Writer: global.hprose.Writer, + Formatter: global.hprose.Formatter + }; + + global.hprose.client = { + Client: global.hprose.Client, + HttpClient: global.hprose.HttpClient, + TcpClient: global.hprose.TcpClient, + WebSocketClient: global.hprose.WebSocketClient + }; + + global.hprose.filter = { + JSONRPCClientFilter: global.hprose.JSONRPCClientFilter + }; + + if (typeof define === 'function') { + if (define.cmd) { + define('hprose', [], global.hprose); + } + else if (define.amd) { + define('hprose', [], function() { return global.hprose; }); + } + } + if (typeof module === 'object' && typeof module.exports === 'object') { + module.exports = global.hprose; + } +})(this); diff --git a/gulpfile.js b/gulpfile.js index f93751e..fdef897 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -10,8 +10,9 @@ gulp.task('clear', function(){ del(['dist/hprose-html5.js']); }); -gulp.task('uglify', ['clear'], function() { - return gulp.src(['src/Init.js', +gulp.task('concat', ['clear'], function() { + return gulp.src(['src/CopyRight.js', + 'src/Init.js', 'src/Helper.js', 'src/Polyfill.js', 'src/HarmonyMaps.js', @@ -35,11 +36,17 @@ gulp.task('uglify', ['clear'], function() { 'src/Loader.js']) .pipe(jshint()) .pipe(jshint.reporter()) - .pipe(concat('hprose-html5.js')) - .pipe(uglify()) + .pipe(concat('hprose-html5.src.js')) .pipe(gulp.dest('dist')); }); +gulp.task('uglify', ['concat'], function() { + return gulp.src(['dist/hprose-html5.src.js']) + .pipe(concat('hprose-html5.js')) + .pipe(uglify()) + .pipe(gulp.dest('dist')); +}); + gulp.task('compress', ['uglify'], function() { return gulp.src(['dist/hprose-html5.js']) .pipe(concat('hprose-html5.min.js')) diff --git a/package.json b/package.json index b359760..36e10f4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.12", + "version": "2.0.13", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index b9bbb3c..22ebce9 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.12 +// Hprose for HTML5 v2.0.13 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Future.js b/src/Future.js index bfb7720..48dc034 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Jun 7, 2016 * + * LastModified: Aug 12, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -372,6 +372,15 @@ }); } + function _resolve(onfulfill, next, x) { + if (onfulfill) { + _call(onfulfill, next, x); + } + else { + next.resolve(x); + } + } + function _reject(onreject, next, e) { if (onreject) { _call(onreject, next, e); @@ -381,81 +390,63 @@ } } - function _resolve(onfulfill, onreject, self, next, x) { - function resolvePromise(y) { - _resolve(onfulfill, onreject, self, next, y); - } - function rejectPromise(r) { - _reject(onreject, next, r); - } - if (isPromise(x)) { - if (x === self) { - rejectPromise(new TypeError('Self resolution')); + Object.defineProperties(Future.prototype, { + _value: { writable: true }, + _reason: { writable: true }, + _state: { value: PENDING, writable: true }, + resolve: { value: function(value) { + if (value === this) { + this.reject(new TypeError('Self resolution')); return; } - x.then(resolvePromise, rejectPromise); - return; - } - if ((x !== null) && - (typeof x === 'object') || - (typeof x === 'function')) { - var then; - try { - then = x.then; - } - catch (e) { - rejectPromise(e); + if (isPromise(value)) { + value.fill(this); return; } - if (typeof then === 'function') { - var notrun = true; + if ((value !== null) && + (typeof value === 'object') || + (typeof value === 'function')) { + var then; try { - then.call(x, function(y) { - if (notrun) { - notrun = false; - resolvePromise(y); - } - }, function(r) { + then = value.then; + } + catch (e) { + this.reject(e); + return; + } + if (typeof then === 'function') { + var notrun = true; + try { + var self = this; + then.call(value, function(y) { + if (notrun) { + notrun = false; + self.resolve(y); + } + }, function(r) { + if (notrun) { + notrun = false; + self.reject(r); + } + }); + return; + } + catch (e) { if (notrun) { notrun = false; - rejectPromise(r); + this.reject(e); } - }); - return; - } - catch (e) { - if (notrun) { - notrun = false; - rejectPromise(e); } + return; } - return; } - } - if (onfulfill) { - _call(onfulfill, next, x); - } - else { - next.resolve(x); - } - } - - Object.defineProperties(Future.prototype, { - _value: { writable: true }, - _reason: { writable: true }, - _state: { value: PENDING, writable: true }, - resolve: { value: function(value) { if (this._state === PENDING) { this._state = FULFILLED; this._value = value; var subscribers = this._subscribers; while (subscribers.length > 0) { var subscriber = subscribers.shift(); - _resolve(subscriber.onfulfill, - subscriber.onreject, - this, - subscriber.next, - value); + _resolve(subscriber.onfulfill, subscriber.next, value); } } } }, @@ -466,43 +457,28 @@ var subscribers = this._subscribers; while (subscribers.length > 0) { var subscriber = subscribers.shift(); - if (subscriber.onreject) { - _call(subscriber.onreject, - subscriber.next, - reason); - } - else { - subscriber.next.reject(reason); - } + _reject(subscriber.onreject, subscriber.next, reason); } } } }, then: { value: function(onfulfill, onreject) { if (typeof onfulfill !== 'function') { onfulfill = null; } if (typeof onreject !== 'function') { onreject = null; } - if (onfulfill || onreject) { - var next = new Future(); - if (this._state === FULFILLED) { - _resolve(onfulfill, onreject, this, next, this._value); - } - else if (this._state === REJECTED) { - if (onreject) { - _call(onreject, next, this._reason); - } - else { - next.reject(this._reason); - } - } - else { - this._subscribers.push({ - onfulfill: onfulfill, - onreject: onreject, - next: next - }); - } - return next; + var next = new Future(); + if (this._state === FULFILLED) { + _resolve(onfulfill, next, this._value); } - return this; + else if (this._state === REJECTED) { + _reject(onreject, next, this._reason); + } + else { + this._subscribers.push({ + onfulfill: onfulfill, + onreject: onreject, + next: next + }); + } + return next; } }, done: { value: function(onfulfill, onreject) { this.then(onfulfill, onreject).then(null, function(error) { @@ -538,18 +514,8 @@ } }, whenComplete: { value: function(action) { return this.then( - function(v) { - var f = action(); - if (f === undefined) { return v; } - f = isPromise(f) ? f : value(f); - return f.then(function() { return v; }); - }, - function(e) { - var f = action(); - if (f === undefined) { throw e; } - f = isPromise(f) ? f : value(f); - return f.then(function() { throw e; }); - } + function(v) { action(); return v; }, + function(e) { action(); throw e; } ); } }, complete: { value: function(oncomplete) { From 72c9ad6e2d0aa93ad9e3200bc3205fe15babe6d0 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 24 Aug 2016 18:25:24 +0800 Subject: [PATCH 40/86] Added failswitch parameter for subscribe --- dist/hprose-html5.js | 8 ++++---- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 16 ++++++++-------- package.json | 2 +- src/Client.js | 14 +++++++------- src/CopyRight.js | 2 +- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index f0773f6..1788946 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.13 +// Hprose for HTML5 v2.0.14 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;t>n;++n)r[n]=e[n];return r}function i(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t=e.length;if(1e5>t)return String.fromCharCode.apply(String,u(e));for(var r=65535&t,n=t>>16,i=new Array(r?n+1:n),a=0;n>a;++a)i[a]=String.fromCharCode.apply(String,u(e.subarray(a<<16,a+1<<16)));return r&&(i[n]=String.fromCharCode.apply(String,u(e.subarray(n<<16,t)))),i.join("")}function a(e){for(var t=e.length,r=new Uint8Array(t),n=0;t>n;n++)r[n]=255&e.charCodeAt(n);return r}var o=!0;try{String.fromCharCode.apply(String,new Uint8Array([1]))}catch(s){o=!1}var u=o?function(e){return e}:n;e.hprose.generic=r,e.hprose.toBinaryString=i,e.hprose.toUint8Array=a,e.hprose.toArray=n}(this),function(e,t){"use strict";function r(e,t){for(var r=e.prototype,i=0,a=t.length;a>i;i++){var o=t[i],s=r[o];"function"==typeof s&&"undefined"==typeof e[o]&&Object.defineProperty(e,o,{value:n(s)})}}Function.prototype.bind||Object.defineProperty(Function.prototype,"bind",{value:function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),r=this,n=function(){},i=function(){return r.apply(this instanceof n?this:e,t.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(n.prototype=this.prototype),i.prototype=new n,i}}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e){var t=Object(this),r=parseInt(t.length,10)||0;if(0===r)return!1;var n,i=parseInt(arguments[1],10)||0;i>=0?n=i:(n=r+i,0>n&&(n=0));for(var a;r>n;){if(a=t[n],e===a||e!==e&&a!==a)return!0;n++}return!1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return r;return t}}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null===this||this===t)throw new TypeError("Array.prototype.findIndex called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],o=0;i>o;o++)if(r=n[o],e.call(a,r,o,n))return o;return-1}}),Array.prototype.fill||Object.defineProperty(Array.prototype,"fill",{value:function(e){if(null===this||this===t)throw new TypeError("this is null or not defined");for(var r=Object(this),n=r.length>>>0,i=arguments[1],a=i>>0,o=0>a?Math.max(n+a,0):Math.min(a,n),s=arguments[2],u=s===t?n:s>>0,c=0>u?Math.max(n+u,0):Math.min(u,n);c>o;)r[o]=e,o++;return r}}),Array.prototype.copyWithin||Object.defineProperty(Array.prototype,"copyWithin",{value:function(e,r){if(null===this||this===t)throw new TypeError("this is null or not defined");var n=Object(this),i=n.length>>>0,a=e>>0,o=0>a?Math.max(i+a,0):Math.min(a,i),s=r>>0,u=0>s?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=0>f?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-o),g=1;for(o>u&&u+h>o&&(g=-1,u+=h-1,o+=h-1);h>0;)u in n?n[o]=n[u]:delete n[o],u+=g,o+=g,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,a=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var o,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(o=arguments[2])}for(var u,c=a(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;c>l;)u=i[l],s?f[l]="undefined"==typeof o?s(u,l):s.call(o,u,l):f[l]=u,l+=1;return f.length=c,f}}()}),Array.of||Object.defineProperty(Array,"of",{value:function(){return Array.prototype.slice.call(arguments)}}),String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(e,t){return t=t||0,this.substr(t,e.length)===e}}),String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(e,t){var r=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>r.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return-1!==n&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?this.lengthe)throw new RangeError("repeat count must be non-negative");if(e===1/0)throw new RangeError("repeat count must be less than infinity");if(e=Math.floor(e),0===t.length||0===e)return"";if(t.length*e>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var a=[];for(var o in i)e.call(i,o)&&a.push(o);if(t)for(var s=0;n>s;s++)e.call(i,r[s])&&a.push(r[s]);return a}}()});var n=e.hprose.generic;r(Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight","includes","find","findIndex"]),r(String,["quote","substring","toLowerCase","toUpperCase","charAt","charCodeAt","indexOf","lastIndexOf","include","startsWith","endsWith","repeat","trim","trimLeft","trimRight","toLocaleLowerCase","toLocaleUpperCase","match","search","replace","split","substr","concat","slice"])}(this),function(e){"use strict";var t="WeakMap"in e,r="Map"in e,n=!0;if(r&&(n="forEach"in new e.Map),!(t&&r&&n)){var i=Object.create(null),a=0,o=function(e){var t=Object.create(null),r=e.valueOf;Object.defineProperty(e,"valueOf",{value:function(n,a){return this===e&&a in i&&i[a]===n?(a in t||(t[a]=Object.create(null)),t[a]):r.apply(this,arguments)},writable:!0,configurable:!0,enumerable:!1})};if(t||(e.WeakMap=function l(){var e=Object.create(null),t=a++;i[t]=e;var r=function(r){if(r!==Object(r))throw new Error("value is not a non-null object");var n=r.valueOf(e,t);return n!==r.valueOf()?n:(o(r),r.valueOf(e,t))},n=Object.create(l.prototype,{get:{value:function(e){return r(e).value}},set:{value:function(e,t){r(e).value=t}},has:{value:function(e){return"value"in r(e)}},"delete":{value:function(e){return delete r(e).value}},clear:{value:function(){delete i[t],t=a++,i[t]=e}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var s=arguments[0],u=0,c=s.length;c>u;u++)n.set(s[u][0],s[u][1]);return n}),!r){var s=function(){var e=Object.create(null),t=a++,r=Object.create(null);i[t]=e;var n=function(n){if(null===n)return r;var i=n.valueOf(e,t);return i!==n.valueOf()?i:(o(n),n.valueOf(e,t))};return{get:function(e){return n(e).value},set:function(e,t){n(e).value=t},has:function(e){return"value"in n(e)},"delete":function(e){return delete n(e).value},clear:function(){delete i[t],t=a++,i[t]=e}}},u=function(){var e=Object.create(null);return{get:function(){return e.value},set:function(t,r){e.value=r},has:function(){return"value"in e},"delete":function(){return delete e.value},clear:function(){e=Object.create(null)}}},c=function(){var e=Object.create(null);return{get:function(t){return e[t]},set:function(t,r){e[t]=r},has:function(t){return t in e},"delete":function(t){return delete e[t]},clear:function(){e=Object.create(null)}}};e.Map=function h(){var e={number:c(),string:c(),"boolean":c(),object:s(),"function":s(),unknown:s(),undefined:u(),"null":u()},t=0,r=[],n=Object.create(h.prototype,{size:{get:function(){return t}},get:{value:function(t){return e[typeof t].get(t)}},set:{value:function(n,i){this.has(n)||(r.push(n),t++),e[typeof n].set(n,i)}},has:{value:function(t){return e[typeof t].has(t)}},"delete":{value:function(n){return this.has(n)?(t--,r.splice(r.indexOf(n),1),e[typeof n]["delete"](n)):!1}},clear:{value:function(){r.length=0;for(var n in e)e[n].clear();t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}if(!n){var f=e.Map;e.Map=function g(){var e=new f,t=0,r=[],n=Object.create(g.prototype,{size:{get:function(){return t}},get:{value:function(t){return e.get(t)}},set:{value:function(n,i){e.has(n)||(r.push(n),t++),e.set(n,i)}},has:{value:function(t){return e.has(t)}},"delete":{value:function(n){return e.has(n)?(t--,r.splice(r.indexOf(n),1),e["delete"](n)):!1}},clear:{value:function(){if("clear"in e)e.clear();else for(var n=0,i=r.length;i>n;n++)e["delete"](r[n]);r.length=0,t=0}},forEach:{value:function(e,t){for(var n=0,i=r.length;i>n;n++)e.call(t,this.get(r[n]),r[n],this)}}});if(arguments.length>0&&Array.isArray(arguments[0]))for(var i=arguments[0],a=0,o=i.length;o>a;a++)n.set(i[a][0],i[a][1]);return n}}}}(this),TimeoutError.prototype=Object.create(Error.prototype),TimeoutError.prototype.constructor=TimeoutError,function(e,t){"use strict";function r(e){var r=Array.prototype.slice.call(arguments,1);return function(){e.apply(t,r)}}function n(e){delete f[e]}function i(e){var t=f[e];if(t)try{t()}finally{n(e)}}function a(e){return f[c]=r.apply(t,e),c++}if(!e.setImmediate){var o=e.document,s=e.MutationObserver||e.WebKitMutationObserver||e.MozMutationOvserver,u={},c=1,f={};u.mutationObserver=function(){var e=[],t=o.createTextNode(""),r=new s(function(){for(;e.length>0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=a(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=a(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=a(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=o.createElement("iframe");e.style.display="none",o.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=a(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=o.documentElement;return function(){var t=a(arguments),r=o.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=a(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?o&&"onreadystatechange"in o.createElement("script")?l.setImmediate=u.readyStateChange():o&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():o&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(r){t.reject(r)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function a(e){return i(e)?e:u(e)}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(r){return s(r)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){a(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function g(){return h(arguments)}function p(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){a(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){a(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var o=new r;return Array.forEach(e,function(e,t){var r=a(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(i){t.reject(i)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:a},join:{value:g},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(r){return void this.reject(r)}if("function"==typeof t){var n=!0;try{var a=this;return void t.call(e,function(e){n&&(n=!1,a.resolve(e))},function(e){n&&(n=!1,a.reject(e))})}catch(r){n&&(n=!1,this.reject(r))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var s=o.shift();M(s.onfulfill,s.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this["catch"](function(n){if(t(n))return r["catch"](e);throw n})}return this["catch"](e)}},"catch":{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;i>n;++n)t[0]=e[n],this.bind.apply(this,t)}}},forEach:{value:function(e,t){return b(this,e,t)}},every:{value:function(e,t){return T(this,e,t)}},some:{value:function(e,t){return _(this,e,t)}},filter:{value:function(e,t){return O(this,e,t)}},map:{value:function(e,t){return S(this,e,t)}},reduce:{value:function(e,t){return arguments.length>1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:p},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;n>i;++i){var a=r.charCodeAt(i);if(128>a)e[t++]=a;else if(2048>a)e[t++]=192|a>>6,e[t++]=128|63&a;else{if(!(55296>a||a>57343)){if(n>i+1){var o=r.charCodeAt(i+1);if(56320>a&&o>=56320&&57343>=o){var s=((1023&a)<<10|1023&o)+65536;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|a>>12,e[t++]=128|a>>6&63,e[t++]=128|63&a}}return t}function a(e,t){for(var r=new Array(t),n=0,i=0,a=e.length;t>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=o;break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(31&o)<<6|63&e[i++];break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");r[n]=(15&o)<<12|(63&e[i++])<<6|63&e[i++];break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));r[n++]=s>>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return t>n&&(r.length=n),[String.fromCharCode.apply(String,r),i]}function o(e,t){for(var r=[],n=new Array(65535),i=0,a=0,o=e.length;t>i&&o>a;i++){var s=e[a++];switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>a))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(31&s)<<6|63&e[a++];break;case 14:if(!(o>a+1))throw new Error("Unfinished UTF-8 octet sequence");n[i]=(15&s)<<12|(63&e[a++])<<6|63&e[a++];break;case 15:if(!(o>a+2))throw new Error("Unfinished UTF-8 octet sequence");var u=((7&s)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536;if(!(u>=0&&1048575>=u))throw new Error("Character outside valid Unicode range: 0x"+u.toString(16));n[i++]=u>>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),a]}function s(e,r){return(r===t||null===r||0>r)&&(r=e.length),0===r?["",0]:1e5>r?a(e,r):o(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[g,0];for(var n=0,i=0,a=e.length;r>n&&a>i;n++){var o=e[i++];switch(o>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(a>i))throw new Error("Unfinished UTF-8 octet sequence");i++;break;case 14:if(!(a>i+1))throw new Error("Unfinished UTF-8 octet sequence");i+=2;break;case 15:if(!(a>i+2))throw new Error("Unfinished UTF-8 octet sequence");var s=((7&o)<<18|(63&e[i++])<<12|(63&e[i++])<<6|63&e[i++])-65536;if(!(s>=0&&1048575>=s))throw new Error("Character outside valid Unicode range: 0x"+s.toString(16));n++;break;default:throw new Error("Bad UTF-8 encoding 0x"+o.toString(16))}}return[e.subarray(0,i),i]}function c(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,g=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?g:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return g.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&2147483647>=e)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;t>i;i++)r[n+i]=e[i]}this._length+=t}}},writeAsciiString:{value:function(e){var t=e.length;if(0!==t){this._grow(t);for(var r=this._bytes,n=this._length,i=0;t>i;++i,++n)r[n]=e.charCodeAt(i);this._length=n}}},writeString:{value:function(e){var t=e.length;0!==t&&(this._grow(3*t),this._length=i(this._bytes,this._length,e))}},readByte:{value:function(){return this._offe?(2147483647&e)+2147483648:e}},readInt32LE:{value:function(){var e=this._bytes,t=this._off;if(t+3e?(2147483647&e)+2147483648:e}},read:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?g:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return-1===r?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:-1===t?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){o.set(e,t),a[t]=e}function r(e){return o.get(e)}function n(e){return a[e]}var i=e.WeakMap,a=Object.create(null),o=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function o(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer: -case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var a=r(n);"Object"===a?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?t>=0&&9>=t?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;t>=0&&9>=t?r.writeByte(t+48):(-2147483648>t||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),a=("00"+t.getUTCDate()).slice(-2),o=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),a=("00"+t.getDate()).slice(-2),o=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===o&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a)):"1970"===n&&"01"===i&&"01"===a?(r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+a),r.writeByte(j.TagTime),r.writeAsciiString(o+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),a=("00"+t.getSeconds()).slice(-2),o=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+a),"000"!==o&&(r.writeByte(j.TagPoint),r.writeAsciiString(o)),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)r(e,t[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace)}function y(e,t){e._refer.write(t)||d(e,t,u)}function w(e,t){e._refer.write(t)||d(e,t,c)}function m(e,t){e._refer.set(t);var r=e.stream,n=[];for(var i in t)t.hasOwnProperty(i)&&"function"!=typeof t[i]&&(n[n.length]=i);var a=n.length;if(r.writeByte(j.TagMap),a>0){r.writeAsciiString(""+a),r.writeByte(j.TagOpenbrace);for(var s=0;a>s;s++)o(e,n[s]),o(e,t[n[s]])}else r.writeByte(j.TagOpenbrace);r.writeByte(j.TagClosebrace)}function b(e,t){e._refer.set(t);var r=e.stream,n=t.size;r.writeByte(j.TagMap),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){o(e,r),o(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,a=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}a.writeByte(j.TagObject),a.writeAsciiString(""+i),a.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;c>f;f++)o(e,t[n[f]]);a.writeByte(j.TagClosebrace)}function _(e,t,r){var n=e.stream,i=r.length;if(n.writeByte(j.TagClass),n.writeAsciiString(""+t.length),n.writeByte(j.TagQuote),n.writeString(t),n.writeByte(j.TagQuote),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var a=0;i>a;a++)v(e,r[a])}else n.writeByte(j.TagOpenbrace);n.writeByte(j.TagClosebrace);var o=e._fieldsref.length;return e._classref[t]=o,e._fieldsref[o]=r,o}var O=e.Map,S=e.hprose.BytesIO,j=e.hprose.Tags,B=e.hprose.ClassManager,E=Object.create(null,{set:{value:function(){}},write:{value:function(){return!1}},reset:{value:function(){}}});Object.defineProperties(n.prototype,{_refcount:{value:0,writable:!0},set:{value:function(e){this._ref.set(e,this._refcount++)}},write:{value:function(e){var r=this._ref.get(e);return r!==t?(this._stream.writeByte(j.TagRef),this._stream.writeString(""+r),this._stream.writeByte(j.TagSemicolon),!0):!1}},reset:{value:function(){this._ref=new O,this._refcount=0}}}),Object.defineProperties(a.prototype,{serialize:{value:function(e){o(this,e)}},writeInteger:{value:function(e){u(this,e)}},writeDouble:{value:function(e){c(this,e)}},writeBoolean:{value:function(e){f(this,e)}},writeUTCDate:{value:function(e){l(this,e)}},writeUTCDateWithRef:{value:function(e){this._refer.write(e)||l(this,e)}},writeDate:{value:function(e){h(this,e)}},writeDateWithRef:{value:function(e){this._refer.write(e)||h(this,e)}},writeTime:{value:function(e){g(this,e)}},writeTimeWithRef:{value:function(e){this._refer.write(e)||g(this,e)}},writeBytes:{value:function(e){p(this,e)}},writeBytesWithRef:{value:function(e){this._refer.write(e)||p(this,e)}},writeString:{value:function(e){v(this,e)}},writeStringWithRef:{value:function(e){this._refer.write(e)||v(this,e)}},writeList:{value:function(e){d(this,e,o)}},writeListWithRef:{value:function(e){this._refer.write(e)||d(this,e,o)}},writeMap:{value:function(e){e instanceof O?b(this,e):m(this,e)}},writeMapWithRef:{value:function(e){this._refer.write(e)||(e instanceof O?b(this,e):m(this,e))}},writeObject:{value:function(e){T(this,e)}},writeObjectWithRef:{value:function(e){this._refer.write(e)||T(this,e)}},reset:{value:function(){this._classref=Object.create(null),this._fieldsref.length=0,this._refer.reset()}}}),e.hprose.Writer=a}(this),function(e,t){"use strict";function r(e,t){if(e&&t){var r="";throw r="number"==typeof t?String.fromCharCode(t):String.fromCharCode.apply(String,t),new Error('Tag "'+r+'" expected, but "'+String.fromCharCode(e)+'" found in stream')}throw e?new Error('Unexpected serialize tag "'+String.fromCharCode(e)+'" in stream'):new Error("No byte found in stream")}function n(e){var t=new Z;return i(e,t),t.bytes}function i(e,t){a(e,t,e.readByte())}function a(e,t,n){switch(t.writeByte(n),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case ee.TagNull:case ee.TagEmpty:case ee.TagTrue:case ee.TagFalse:case ee.TagNaN:break;case ee.TagInfinity:t.writeByte(e.readByte());break;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:case ee.TagRef:o(e,t);break;case ee.TagDate:case ee.TagTime:s(e,t);break;case ee.TagUTF8Char:u(e,t);break;case ee.TagBytes:c(e,t);break;case ee.TagString:f(e,t);break;case ee.TagGuid:l(e,t);break;case ee.TagList:case ee.TagMap:case ee.TagObject:h(e,t);break;case ee.TagClass:h(e,t),i(e,t);break;case ee.TagError:i(e,t);break;default:r(n)}}function o(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon)}function s(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagSemicolon&&r!==ee.TagUTC)}function u(e,t){t.writeString(e.readString(1))}function c(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.read(r+1))}function f(e,t){var r=0,n=48;do r*=10,r+=n-48,n=e.readByte(),t.writeByte(n);while(n!==ee.TagQuote);t.write(e.readStringAsBytes(r+1))}function l(e,t){t.write(e.read(38))}function h(e,t){var r;do r=e.readByte(),t.writeByte(r);while(r!==ee.TagOpenbrace);for(;(r=e.readByte())!==ee.TagClosebrace;)a(e,t,r);t.writeByte(r)}function g(e){Object.defineProperties(this,{stream:{value:e},readRaw:{value:function(){return n(e)}}})}function p(){Object.defineProperties(this,{ref:{value:[]}})}function v(){return new p}function d(r){var n,i=e,a=r.split(".");for(n=0;n=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,a=parseInt(r.readAsciiString(2),10),o=r.readByte();if(o===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;o=r.readByte(),o===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte(),o>=48&&57>=o&&(r.skip(2),o=r.readByte()))),t=o===ee.TagUTC?new Date(Date.UTC(n,i,a,s,u,c,f)):new Date(n,i,a,s,u,c,f)}else t=o===ee.TagUTC?new Date(Date.UTC(n,i,a)):new Date(n,i,a);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),a=parseInt(r.readAsciiString(2),10),o=0,s=r.readByte();return s===ee.TagPoint&&(o=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte(),s>=48&&57>=s&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,a,o)):new Date(1970,0,1,n,i,a,o),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++)r[i]=b(e);return t.skip(1),r}function z(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagList:return D(e);case ee.TagRef:return K(e);default:r(t)}}function q(e){var t=e.stream,r={};e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r[a]=o}return t.skip(1),r}function H(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return q(e);case ee.TagRef:return K(e);default:r(t)}}function Q(e){var t=e.stream,r=new X;e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;n>i;i++){var a=b(e),o=b(e);r.set(a,o)}return t.skip(1),r}function G(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagMap:return Q(e);case ee.TagRef:return K(e);default:r(t)}}function Y(e){var t=e.stream,r=e.classref[m(t,ee.TagOpenbrace)],n=new r.classname;e.refer.set(n);for(var i=0;ia;a++)i[a]=F(e);t.skip(1),r=w(r),e.classref.push({classname:r,count:n,fields:i})}function K(e){return e.refer.read(m(e.stream,ee.TagSemicolon))}function V(e,t,r){g.call(this,e),this.useHarmonyMap=!!r,Object.defineProperties(this,{classref:{value:[]},refer:{value:t?re:v()}})}var X=e.Map,Z=e.hprose.BytesIO,ee=e.hprose.Tags,te=e.hprose.ClassManager;e.hprose.RawReader=g;var re=Object.create(null,{set:{value:function(){}},read:{value:function(){r(ee.TagRef)}},reset:{value:function(){}}});Object.defineProperties(p.prototype,{set:{value:function(e){this.ref.push(e)}},read:{value:function(e){return this.ref[e]}},reset:{value:function(){this.ref.length=0}}}),V.prototype=Object.create(g.prototype),V.prototype.constructor=V,Object.defineProperties(V.prototype,{useHarmonyMap:{value:!1,writable:!0},checkTag:{value:function(e,n){n===t&&(n=this.stream.readByte()),n!==e&&r(n,e)}},checkTags:{value:function(e,n){return n===t&&(n=this.stream.readByte()),e.indexOf(n)>=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,a=new i(r,t);return a.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new a(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,a=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,a){function m(e,t){for(var r=0,n=ze.length;n>r;r++)e=ze[r].outputFilter(e,t);return e}function b(e,t){for(var r=ze.length-1;r>=0;r--)e=ze[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Xe(e,t).then(function(e){return t.oneway?void 0:b(e,t)})}function _(e,t){return nt.sendAndReceive(e,t)}function O(e,t,r,n){Ve(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Ce.length;if(e>1){var t=Ie+Math.floor(Math.random()*(e-1))+1;t>=e&&(t%=e),Ie=t,ke=Ce[Ie]}}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&--r.retry>=0){var a=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},a),!0}return!1}function B(e){var t={retry:Pe,idempotent:!0,failswitch:!0,timeout:xe,client:nt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,!0),a=n.readByte();switch(a){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var o=i.readList();i.checkTag(s.TagEnd),k(e,o);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(u){r=u}null!==r?Qe.reject(r):Qe.resolve(e)};O(g,t,r,Qe.reject)}function E(e,t){return function(){return qe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,a){if(r[i]===t&&(r[i]={},(typeof a===v||a.constructor===Object)&&(a=[a]),Array.isArray(a)))for(var o=0;on;++n)t[n]=e[n]}function I(e){return e?{mode:u.Normal,byref:Re,simple:Me,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}:{mode:u.Normal,byref:Re,simple:Me,timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,onsuccess:t,onerror:t,useHarmonyMap:Le,client:nt,userdata:{}}}function R(e,t,r,n){var i=I(n);if(t in e){var a=e[t];for(var o in a)o in i&&(i[o]=a[o])}for(var s=0,u=r.length;u>s&&typeof r[s]!==y;++s);if(s===u)return i;var c=r.splice(s,u-s);for(i.onsuccess=c[0],u=c.length,s=1;u>s;++s){var f=c[s];switch(typeof f){case y:i.onerror=f;break;case p:i.byref=f;break;case d:i.mode=f;break;case w:for(var l in f)l in i&&(i[l]=f[l])}}return i}function M(e,t,r){var n=new c;n.writeByte(s.TagCall);var i=new f(n,r.simple);return i.writeString(e),(t.length>0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Fe?h.promise(function(i,a){We.push({batch:n,name:e,args:t,context:r,resolve:i,reject:a})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):De(e,t),n(t)}catch(i){n(i)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var a=null,o=null;try{if(r.mode===u.RawWithEndTag)a=n;else if(r.mode===u.Raw)a=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,!1,r.useHarmonyMap),g=f.readByte();if(g===s.TagResult){if(a=r.mode===u.Serialized?h.readRaw():h.unserialize(),g=f.readByte(),g===s.TagArgument){h.reset();var p=h.readList();C(p,t),g=f.readByte()}}else g===s.TagError&&(o=new Error(h.readString()),g=f.readByte());g!==s.TagEnd&&(o=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(v){o=v}o?i(o):e(a)},i)})}function F(e){return function(){e&&(Fe=!1,o(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},We),We=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){$e(e,t,r).then(function(a){try{if(r.onsuccess)try{r.onsuccess(a,t)}catch(o){r.onerror&&r.onerror(e,o),i(o)}n(a)}catch(o){i(o)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,client:nt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var a=-1,o=new c(r),f=new l(o,!1),h=o.readByte();try{for(;h!==s.TagEnd;){var g=null,p=null,v=e[++a].context.mode;if(v>=u.Raw&&(g=new c),h===s.TagResult){if(v===u.Serialized?g=f.readRaw():v>=u.Raw?(g.writeByte(s.TagResult),g.write(f.readRaw())):(f.useHarmonyMap=e[a].context.useHarmonyMap,f.reset(),g=f.unserialize()),h=o.readByte(),h===s.TagArgument){if(v>=u.Raw)g.writeByte(s.TagArgument),g.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[a].args)}h=o.readByte()}}else h===s.TagError&&(v>=u.Raw?(g.writeByte(s.TagError),g.write(f.readRaw())):(f.reset(),p=new Error(f.readString())),h=o.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&g.writeByte(s.TagEnd),e[a].result=g.bytes):e[a].result=g,e[a].error=p}}catch(y){return void i(y)}n(e)},i)})}function q(){qe=!0}function H(e){if(e=e||{},qe=!1,Fe)return h.promise(function(t,r){We.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return De}function G(e){typeof e===y&&(De=e)}function Y(){return ke}function J(){return Ne}function $(e){Ne=!!e}function K(){return xe}function V(e){xe="number"==typeof e?0|e:0}function X(){return Pe}function Z(e){Pe="number"==typeof e?0|e:0}function ee(){return Ue}function te(e){Ue=!!e}function re(e){Je=!!e}function ne(){return Je}function ie(){return Re}function ae(e){Re=!!e}function oe(){return Me}function se(e){Me=!!e}function ue(){return Le}function ce(e){Le=!!e}function fe(){return 0===ze.length?null:1===ze.length?ze[0]:ze.slice()}function le(e){ze.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&ze.push(e)}function ge(e){var t=ze.indexOf(e);return-1===t?!1:(ze.splice(t,1),!0)}function pe(){return ze}function ve(e,r,n){n===t&&(typeof r===p&&(n=r,r=!1),r||(typeof e===p?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=nt;return n&&(i={}),e||ke?(e&&(ke=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Qe.resolve(i),i):(o(B,i),Qe)):new Error("You should set server uri first!")}function de(e,t,n){var i=arguments.length;if(1>i||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var a=[];typeof t!==y&&a.push(r),a.push(t),t=a}if(i>2){typeof n!==y&&t.push(r);for(var o=2;i>o;o++)t.push(arguments[o])}return P(nt,e,t,qe)}function ye(e,t){return Qe.then(e,t)}function we(e,t,r){if(Ge[e]){var n=Ge[e];return n[t]?n[t]:null}return r&&(Ge[e]=Object.create(null)),null}function me(e,r,n,i){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)throw new TypeError("callback must be a function.");r=n}if(typeof r===y)return i=n,n=r,null===Ye&&(Ye=Oe()),void Ye.then(function(t){me(e,t,n,i)});if(typeof n!==y)throw new TypeError("callback must be a function.");if(h.isPromise(r))return void r.then(function(t){me(e,t,n,i)});i===t&&(i=xe);var a=we(e,r,!0);if(null===a){var o=function(){P(nt,e,[r,a.handler,o,{idempotent:!0,failswitch:!1,timeout:i}],!1)};a={handler:function(t){var n=we(e,r,!1);if(n){if(null!==t)for(var i=n.callbacks,a=0,s=i.length;s>a;++a)try{i[a](t)}catch(u){}null!==we(e,r,!1)&&o()}},callbacks:[n]},Ge[e][r]=a,o()}else a.callbacks.indexOf(n)<0&&a.callbacks.push(n)}function be(e,t,r){if(e)if(typeof r===y){var n=e[t];if(n){var i=n.callbacks,a=i.indexOf(r);a>=0&&(i[a]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ge[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ye){if(Ge[e]){var i=Ge[e];for(r in i)be(i,r,n)}}else Ye.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):be(Ge[e],r,n)}function _e(){return Ye}function Oe(){return P(nt,"#",[],!1)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Ee(e){rt.push(e),Xe=rt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ae(e){return Se(e),nt}var ke,Ce=[],Ie=-1,Re=!1,Me=!1,xe=3e4,Pe=10,Ue=!1,Ne=!1,Fe=!1,We=[],Le=!1,De=r,ze=[],qe=!1,He=[],Qe=new h,Ge=Object.create(null),Ye=null,Je=!0,$e=N,Ke=z,Ve=T,Xe=_,Ze=[],et=[],tt=[],rt=[],nt=this;Oe.sync=!0,Oe.idempotent=!0,Oe.failswitch=!0;var it=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return je(e),it}}}),at=Object.create(null,{use:{value:function(e){return Be(e),at}}}),ot=Object.create(null,{use:{value:function(e){return Ee(e),ot}}});Object.defineProperties(this,{"#":{value:Oe},onerror:{get:Q,set:G},uri:{get:Y},id:{get:_e},failswitch:{get:J,set:$},timeout:{get:K,set:V},retry:{get:X,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:ae},simple:{get:oe,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:ge},filters:{get:pe},useService:{value:ve},invoke:{value:de},ready:{value:ye},subscribe:{value:me},unsubscribe:{value:Te},use:{value:Ae},batch:{value:it},beforeFilter:{value:at},afterFilter:{value:ot}}),a&&typeof a===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in a&&(nt[e]=a[e])}),typeof n===v?(Ce=[n],Ie=0,ve(n,i)):Array.isArray(n)&&(Ce=n,Ie=Math.floor(Math.random()*Ce.length),ve(Ce[Ie],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(a){}try{return e.hprose.TcpClient.create(t,r,n)}catch(a){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(a){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var o=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,g=new Uint8Array(1);g[0]=s.TagEnd;var p="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:a}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,a,f){function h(e,n){var i=new s,a=new XMLHttpRequest;a.open("POST",O.uri,!0),l&&(a.withCredentials="true"),a.responseType="arraybuffer";for(var o in b)a.setRequestHeader(o,b[o]);if(a.onload=function(){a.onload=r,a.status&&(200===a.status?i.resolve(new Uint8Array(a.response)):i.reject(new Error(a.status+":"+a.statusText)))},a.onerror=function(){i.reject(new Error("error"))},a.upload!==t&&(a.upload.onprogress=T),a.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw a.onload=r,a.onerror=r,a.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),a.send(u.buffer)}return i}function g(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function p(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?g(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,a,f);o.call(this,i,a,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:p}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:a}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,a){function l(){return 2147483647>m?++m:m=0}function h(e,t){var r=new o;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function g(e){O.resolve(e)}function p(e){var r=new o(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),100>b&&_.length>0){++b;var a=_.pop();O.then(function(){h(a[0],a[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){ -t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=g,S.onmessage=p,S.onerror=r,S.onclose=v}function y(e,t){(null===S||S.readyState===f.CLOSING||S.readyState===f.CLOSED)&&d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),100>b?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,a);s.call(this,e,i,a);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var o=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:a}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new o,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var o=e.hprose.Future,s={},u=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){0>e&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){0>e?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=a}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,a=e.atob,o=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:o(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new g,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,a=n.headerLength,o=n.dataLength,s=n.id;for(i.write(r);;){if(0>o&&i.length>=a&&(o=i.readInt32BE(),0!==(2147483648&o)&&(o&=2147483647,a=8)),8===a&&null===s&&i.length>=a&&(s=i.readInt32BE()),!(o>=0&&i.length-a>=o))break;t(i.read(o),s),a=4,s=null,i.trunc(),o=-1}n.stream=i,n.headerLength=a,n.dataLength=o,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){i.call(this,e)}function o(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,1>b&&(b=10)):b=10}function g(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new p;return m?((null===_||_.uri!==y.uri)&&(_=new a(y)),_.sendAndReceive(e,r,t)):((null===O||O.uri!==y.uri)&&(O=new o(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:g,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,g=e.hprose.BytesIO,p=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,a=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var o;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)o=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");o=new l}var s=this;return o.connect(i,a,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),o.onclose=function(){--s.size},++this.size,o}}}),a.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var a=n[i];t.clean(e,i),a.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutIds[n]=e.setTimeout(function(){o.clean(a,n),0===a.count&&o.recycle(a),r.reject(new v("timeout"))},s)),a.count++,a.futures[n]=r;var u=t.length,c=new g(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),a.send(c.buffer).then(function(){o.sendNext(a)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,a){var o=this,s=i.timeout;s>0&&(a.timeoutId=e.setTimeout(function(){o.clean(a),o.recycle(a),r.reject(new v("timeout"))},s)),n(a,function(e){o.clean(a),o.sendNext(a),r.resolve(e)}),a.onerror=function(e){o.clean(a),r.reject(e)};var u=t.length,c=new g(4+u);c.writeInt32BE(u),c.write(t),a.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.sizec;++c){var l=a[c];l.error?(s.writeByte(r.TagError),u.writeString(l.error.message)):(s.writeByte(r.TagResult),u.serialize(l.result))}return s.writeByte(r.TagEnd),s.bytes},t.prototype.outputFilter=function(e){var t=[],i=new n(e),u=new a(i,!1,!1),c=i.readByte();do{var f={};c===r.TagCall&&(f.method=u.readString(),c=i.readByte(),c===r.TagList&&(f.params=u.readListWithoutTag(),c=i.readByte()),c===r.TagTrue&&(c=i.readByte())),"1.1"===this.version?f.version="1.1":"2.0"===this.version&&(f.jsonrpc="2.0"),f.id=s++,t.push(f)}while(c===r.TagCall);return t.length>1?o.stringify(t):o.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>16,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=o(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<1e5?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S: +return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,o){function m(e,t){for(var r=0,n=ze.length;r=0;r--)e=ze[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Xe(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return nt.sendAndReceive(e,t)}function O(e,t,r,n){Ve(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Ce.length;if(e>1){var t=Ie+Math.floor(Math.random()*(e-1))+1;t>=e&&(t%=e),Ie=t,ke=Ce[Ie]}}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&--r.retry>=0){var o=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},o),!0}return!1}function B(e){var t={retry:Pe,idempotent:!0,failswitch:!0,timeout:xe,client:nt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Qe.reject(r):Qe.resolve(e)};O(p,t,r,Qe.reject)}function E(e,t){return function(){return qe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==v&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Fe?h.promise(function(i,o){We.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):De(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var g=h.readList();C(g,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(Fe=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},We),We=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){$e(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,client:nt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,g=null,v=e[++o].context.mode;if(v>=u.Raw&&(p=new c),h===s.TagResult){if(v===u.Serialized?p=f.readRaw():v>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(v>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(v>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),g=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=g}}catch(e){return void i(e)}n(e)},i)})}function q(){qe=!0}function H(e){if(e=e||{},qe=!1,Fe)return h.promise(function(t,r){We.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return De}function G(e){typeof e===y&&(De=e)}function Y(){return ke}function J(){return Ne}function $(e){Ne=!!e}function K(){return xe}function V(e){xe="number"==typeof e?0|e:0}function X(){return Pe}function Z(e){Pe="number"==typeof e?0|e:0}function ee(){return Ue}function te(e){Ue=!!e}function re(e){Je=!!e}function ne(){return Je}function ie(){return Re}function oe(e){Re=!!e}function ae(){return Me}function se(e){Me=!!e}function ue(){return Le}function ce(e){Le=!!e}function fe(){return 0===ze.length?null:1===ze.length?ze[0]:ze.slice()}function le(e){ze.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&ze.push(e)}function pe(e){var t=ze.indexOf(e);return t!==-1&&(ze.splice(t,1),!0)}function ge(){return ze}function ve(e,r,n){n===t&&(typeof r===g&&(n=r,r=!1),r||(typeof e===g?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=nt;return n&&(i={}),e||ke?(e&&(ke=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Qe.resolve(i),i):(a(B,i),Qe)):new Error("You should set server uri first!")}function de(e,t,n){var i=arguments.length;if(i<1||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==y&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==y&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ge[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ye){if(Ge[e]){var i=Ge[e];for(r in i)be(i,r,n)}}else Ye.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):be(Ge[e],r,n)}function _e(){return Ye}function Oe(){return P(nt,"#",[],!1)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Ee(e){rt.push(e),Xe=rt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ae(e){return Se(e),nt}var ke,Ce=[],Ie=-1,Re=!1,Me=!1,xe=3e4,Pe=10,Ue=!1,Ne=!1,Fe=!1,We=[],Le=!1,De=r,ze=[],qe=!1,He=[],Qe=new h,Ge=Object.create(null),Ye=null,Je=!0,$e=N,Ke=z,Ve=T,Xe=_,Ze=[],et=[],tt=[],rt=[],nt=this;Oe.sync=!0,Oe.idempotent=!0,Oe.failswitch=!0;var it=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return je(e),it}}}),ot=Object.create(null,{use:{value:function(e){return Be(e),ot}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:Oe},onerror:{get:Q,set:G},uri:{get:Y},id:{get:_e},failswitch:{get:J,set:$},timeout:{get:K,set:V},retry:{get:X,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:oe},simple:{get:ae,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:pe},filters:{get:ge},useService:{value:ve},invoke:{value:de},ready:{value:ye},subscribe:{value:me},unsubscribe:{value:Te},use:{value:Ae},batch:{value:it},beforeFilter:{value:ot},afterFilter:{value:at}}),o&&typeof o===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(nt[e]=o[e])}),typeof n===v?(Ce=[n],Ie=0,ve(n,i)):Array.isArray(n)&&(Ce=n,Ie=Math.floor(Math.random()*Ce.length),ve(Ce[Ie],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=new Uint8Array(1);p[0]=s.TagEnd;var g="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,o){function l(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)), +delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==f.CLOSING&&S.readyState!==f.CLOSED||d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,o=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),a.recycle(o),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 9d1c3a5..6f9e64c 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 1b728c3..8c8a029 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.13 +// Hprose for HTML5 v2.0.14 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -3896,7 +3896,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose client for HTML5. * * * - * LastModified: Jul 26, 2016 * + * LastModified: Aug 24, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -4723,9 +4723,9 @@ TimeoutError.prototype.constructor = TimeoutError; } return null; } - // subscribe(name, callback, timeout) - // subscribe(name, id, callback, timeout) - function subscribe(name, id, callback, timeout) { + // subscribe(name, callback, timeout, failswitch) + // subscribe(name, id, callback, timeout, failswitch) + function subscribe(name, id, callback, timeout, failswitch) { if (typeof name !== s_string) { throw new TypeError('topic name must be a string.'); } @@ -4744,7 +4744,7 @@ TimeoutError.prototype.constructor = TimeoutError; _id = autoId(); } _id.then(function(id) { - subscribe(name, id, callback, timeout); + subscribe(name, id, callback, timeout, failswitch); }); return; } @@ -4753,7 +4753,7 @@ TimeoutError.prototype.constructor = TimeoutError; } if (Future.isPromise(id)) { id.then(function(id) { - subscribe(name, id, callback, timeout); + subscribe(name, id, callback, timeout, failswitch); }); return; } @@ -4763,7 +4763,7 @@ TimeoutError.prototype.constructor = TimeoutError; var cb = function() { _invoke(self, name, [id, topic.handler, cb, { idempotent: true, - failswitch: false, + failswitch: failswitch, timeout: timeout }], false); }; diff --git a/package.json b/package.json index 36e10f4..7869d72 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.13", + "version": "2.0.14", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/Client.js b/src/Client.js index 19da22e..8089e48 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Jul 26, 2016 * + * LastModified: Aug 24, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -839,9 +839,9 @@ } return null; } - // subscribe(name, callback, timeout) - // subscribe(name, id, callback, timeout) - function subscribe(name, id, callback, timeout) { + // subscribe(name, callback, timeout, failswitch) + // subscribe(name, id, callback, timeout, failswitch) + function subscribe(name, id, callback, timeout, failswitch) { if (typeof name !== s_string) { throw new TypeError('topic name must be a string.'); } @@ -860,7 +860,7 @@ _id = autoId(); } _id.then(function(id) { - subscribe(name, id, callback, timeout); + subscribe(name, id, callback, timeout, failswitch); }); return; } @@ -869,7 +869,7 @@ } if (Future.isPromise(id)) { id.then(function(id) { - subscribe(name, id, callback, timeout); + subscribe(name, id, callback, timeout, failswitch); }); return; } @@ -879,7 +879,7 @@ var cb = function() { _invoke(self, name, [id, topic.handler, cb, { idempotent: true, - failswitch: false, + failswitch: failswitch, timeout: timeout }], false); }; diff --git a/src/CopyRight.js b/src/CopyRight.js index 22ebce9..6b56003 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.13 +// Hprose for HTML5 v2.0.14 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From 50db6736781d1b4079d9818650419fb76f4c12f3 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 4 Sep 2016 14:06:18 +0800 Subject: [PATCH 41/86] Update to 2.0.15 --- bower.json | 2 +- dist/hprose-html5.js | 6 +-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 84 ++++++++++++++++++++++++++++++---------- package.json | 2 +- src/Client.js | 82 ++++++++++++++++++++++++++++++--------- src/CopyRight.js | 2 +- 7 files changed, 134 insertions(+), 46 deletions(-) diff --git a/bower.json b/bower.json index d6a3892..d6df74d 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.13", + "version": "2.0.15", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 1788946..281521f 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.14 +// Hprose for HTML5 v2.0.15 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>16,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=o(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<1e5?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S: -return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,o){function m(e,t){for(var r=0,n=ze.length;r=0;r--)e=ze[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),Xe(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return nt.sendAndReceive(e,t)}function O(e,t,r,n){Ve(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Ce.length;if(e>1){var t=Ie+Math.floor(Math.random()*(e-1))+1;t>=e&&(t%=e),Ie=t,ke=Ce[Ie]}}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&--r.retry>=0){var o=r.retry>=10?500:500*(10-r.retry);return e.setTimeout(function(){O(t,r,n,i)},o),!0}return!1}function B(e){var t={retry:Pe,idempotent:!0,failswitch:!0,timeout:xe,client:nt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Qe.reject(r):Qe.resolve(e)};O(p,t,r,Qe.reject)}function E(e,t){return function(){return qe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==v&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Fe?h.promise(function(i,o){We.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):De(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var g=h.readList();C(g,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(Fe=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},We),We=[])}}function W(e,t,r){r.sync&&(Fe=!0);var n=h.promise(function(n,i){$e(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){He.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:xe,retry:Pe,idempotent:Ue,failswitch:Ne,oneway:!1,sync:!1,client:nt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,g=null,v=e[++o].context.mode;if(v>=u.Raw&&(p=new c),h===s.TagResult){if(v===u.Serialized?p=f.readRaw():v>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(v>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(v>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),g=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=g}}catch(e){return void i(e)}n(e)},i)})}function q(){qe=!0}function H(e){if(e=e||{},qe=!1,Fe)return h.promise(function(t,r){We.push({batch:!0,settings:e,resolve:t,reject:r})});var t=He.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Fe=!0);var n=He;He=[];var i=h.promise(function(e,t){Ke(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return De}function G(e){typeof e===y&&(De=e)}function Y(){return ke}function J(){return Ne}function $(e){Ne=!!e}function K(){return xe}function V(e){xe="number"==typeof e?0|e:0}function X(){return Pe}function Z(e){Pe="number"==typeof e?0|e:0}function ee(){return Ue}function te(e){Ue=!!e}function re(e){Je=!!e}function ne(){return Je}function ie(){return Re}function oe(e){Re=!!e}function ae(){return Me}function se(e){Me=!!e}function ue(){return Le}function ce(e){Le=!!e}function fe(){return 0===ze.length?null:1===ze.length?ze[0]:ze.slice()}function le(e){ze.length=0,Array.isArray(e)?e.forEach(function(e){he(e)}):he(e)}function he(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&ze.push(e)}function pe(e){var t=ze.indexOf(e);return t!==-1&&(ze.splice(t,1),!0)}function ge(){return ze}function ve(e,r,n){n===t&&(typeof r===g&&(n=r,r=!1),r||(typeof e===g?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=nt;return n&&(i={}),e||ke?(e&&(ke=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Qe.resolve(i),i):(a(B,i),Qe)):new Error("You should set server uri first!")}function de(e,t,n){var i=arguments.length;if(i<1||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==y&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==y&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Te(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ge[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===Ye){if(Ge[e]){var i=Ge[e];for(r in i)be(i,r,n)}}else Ye.then(function(t){Te(e,t,n)});else h.isPromise(r)?r.then(function(t){Te(e,t,n)}):be(Ge[e],r,n)}function _e(){return Ye}function Oe(){return P(nt,"#",[],!1)}function Se(e){Ze.push(e),$e=Ze.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function je(e){et.push(e),Ke=et.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Be(e){tt.push(e),Ve=tt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Ee(e){rt.push(e),Xe=rt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Ae(e){return Se(e),nt}var ke,Ce=[],Ie=-1,Re=!1,Me=!1,xe=3e4,Pe=10,Ue=!1,Ne=!1,Fe=!1,We=[],Le=!1,De=r,ze=[],qe=!1,He=[],Qe=new h,Ge=Object.create(null),Ye=null,Je=!0,$e=N,Ke=z,Ve=T,Xe=_,Ze=[],et=[],tt=[],rt=[],nt=this;Oe.sync=!0,Oe.idempotent=!0,Oe.failswitch=!0;var it=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return je(e),it}}}),ot=Object.create(null,{use:{value:function(e){return Be(e),ot}}}),at=Object.create(null,{use:{value:function(e){return Ee(e),at}}});Object.defineProperties(this,{"#":{value:Oe},onerror:{get:Q,set:G},uri:{get:Y},id:{get:_e},failswitch:{get:J,set:$},timeout:{get:K,set:V},retry:{get:X,set:Z},idempotent:{get:ee,set:te},keepAlive:{get:ne,set:re},byref:{get:ie,set:oe},simple:{get:ae,set:se},useHarmonyMap:{get:ue,set:ce},filter:{get:fe,set:le},addFilter:{value:he},removeFilter:{value:pe},filters:{get:ge},useService:{value:ve},invoke:{value:de},ready:{value:ye},subscribe:{value:me},unsubscribe:{value:Te},use:{value:Ae},batch:{value:it},beforeFilter:{value:ot},afterFilter:{value:at}}),o&&typeof o===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(nt[e]=o[e])}),typeof n===v?(Ce=[n],Ie=0,ve(n,i)):Array.isArray(n)&&(Ce=n,Ie=Math.floor(Math.random()*Ce.length),ve(Ce[Ie],i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=new Uint8Array(1);p[0]=s.TagEnd;var g="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,o){function l(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)), -delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==f.CLOSING&&S.readyState!==f.CLOSED||d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,o=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),a.recycle(o),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,o){function m(e,t){for(var r=0,n=$e.length;r=0;r--)e=$e[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),ot(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return ft.sendAndReceive(e,t)}function O(e,t,r,n){it(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Pe.length;if(e>1){var t=Ue+1;t>=e&&(t=0,qe++),Ue=t,xe=Pe[Ue]}else qe++;Je(ft)}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){O(t,r,n,i)},o):O(t,r,n,i),!0}return!1}function B(e){var t={retry:Le,retried:0,idempotent:!0,failswitch:!0,timeout:We,client:ft,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Xe.reject(r):Xe.resolve(e)};O(p,t,r,Xe.reject)}function E(e,t){return function(){return Ke?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==v&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return He?h.promise(function(i,o){Qe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Ye(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var g=h.readList();C(g,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(He=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Qe),Qe=[])}}function W(e,t,r){r.sync&&(He=!0);var n=h.promise(function(n,i){rt(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ve.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:We,retry:Le,retried:0,idempotent:De,failswitch:ze,oneway:!1,sync:!1,client:ft,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,g=null,v=e[++o].context.mode;if(v>=u.Raw&&(p=new c),h===s.TagResult){if(v===u.Serialized?p=f.readRaw():v>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(v>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(v>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),g=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=g}}catch(e){return void i(e)}n(e)},i)})}function q(){Ke=!0}function H(e){if(e=e||{},Ke=!1,He)return h.promise(function(t,r){Qe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ve.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(He=!0);var n=Ve;Ve=[];var i=h.promise(function(e,t){nt(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return Ye}function G(e){typeof e===y&&(Ye=e)}function Y(){return Je}function J(e){typeof e===y&&(Je=e)}function $(){return xe}function K(){return Pe}function V(e){if(typeof e===v)Pe=[e];else{if(!Array.isArray(e))return;Pe=e.slice(0),Pe.sort(function(){return Math.random()-.5})}Ue=0,xe=Pe[Ue]}function X(){return ze}function Z(e){ze=!!e}function ee(){return qe}function te(){return We}function re(e){We="number"==typeof e?0|e:0}function ne(){return Le}function ie(e){Le="number"==typeof e?0|e:0}function oe(){return De}function ae(e){De=!!e}function se(e){tt=!!e}function ue(){return tt}function ce(){return Ne}function fe(e){Ne=!!e}function le(){return Fe}function he(e){Fe=!!e}function pe(){return Ge}function ge(e){Ge=!!e}function ve(){return 0===$e.length?null:1===$e.length?$e[0]:$e.slice()}function de(e){$e.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&$e.push(e)}function we(e){var t=$e.indexOf(e);return t!==-1&&($e.splice(t,1),!0)}function me(){return $e}function be(e,r,n){n===t&&(typeof r===g&&(n=r,r=!1),r||(typeof e===g?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ft;return n&&(i={}),e||xe?(e&&(xe=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Xe.resolve(i),i):(a(B,i),Xe)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==y&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==y&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ze[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===et){if(Ze[e]){var i=Ze[e];for(r in i)je(i,r,n)}}else et.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(Ze[e],r,n)}function Ee(){return et}function Ae(){return P(ft,"#",[],!1)}function ke(e){at.push(e),rt=at.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Ce(e){st.push(e),nt=st.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return ke(e),ft}var xe,Pe=[],Ue=-1,Ne=!1,Fe=!1,We=3e4,Le=10,De=!1,ze=!1,qe=0,He=!1,Qe=[],Ge=!1,Ye=r,Je=r,$e=[],Ke=!1,Ve=[],Xe=new h,Ze=Object.create(null),et=null,tt=!0,rt=N,nt=z,it=T,ot=_,at=[],st=[],ut=[],ct=[],ft=this;Ae.sync=!0,Ae.idempotent=!0,Ae.failswitch=!0;var lt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Ce(e),lt}}}),ht=Object.create(null,{use:{value:function(e){return Ie(e),ht}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}});Object.defineProperties(this,{"#":{value:Ae},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:Ee},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ge},filter:{get:ve,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},use:{value:Me},batch:{value:lt},beforeFilter:{value:ht},afterFilter:{value:pt}}),o&&typeof o===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(ft[e]=o[e])}),n&&(V(n),be(i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=new Uint8Array(1);p[0]=s.TagEnd;var g="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,o){function l(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer); +}function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==f.CLOSING&&S.readyState!==f.CLOSED||d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,o=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),a.recycle(o),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 6f9e64c..51272dd 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 8c8a029..64f3ba0 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.14 +// Hprose for HTML5 v2.0.15 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -3896,7 +3896,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose client for HTML5. * * * - * LastModified: Aug 24, 2016 * + * LastModified: Sep 4, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -3927,7 +3927,7 @@ TimeoutError.prototype.constructor = TimeoutError; // private members var _uri, - _uris = [], + _uriList = [], _index = -1, _byref = false, _simple = false, @@ -3935,10 +3935,12 @@ TimeoutError.prototype.constructor = TimeoutError; _retry = 10, _idempotent = false, _failswitch = false, + _failround = 0, _lock = false, _tasks = [], _useHarmonyMap = false, _onerror = noop, + _onfailswitch = noop, _filters = [], _batch = false, _batches = [], @@ -3993,29 +3995,43 @@ TimeoutError.prototype.constructor = TimeoutError; } function failswitch() { - var n = _uris.length; + var n = _uriList.length; if (n > 1) { - var i = _index + Math.floor(Math.random() * (n - 1)) + 1; + var i = _index + 1; if (i >= n) { - i %= n; + i = 0; + _failround++; } _index = i; - _uri = _uris[_index]; + _uri = _uriList[_index]; } + else { + _failround++; + } + _onfailswitch(self); } function retry(data, context, onsuccess, onerror) { if (context.failswitch) { failswitch(); } - if (context.idempotent) { - if (--context.retry >= 0) { - var interval = (context.retry >= 10) ? 500 : (10 - context.retry) * 500; + if (context.idempotent && (context.retried < context.retry)) { + var interval = ++context.retried * 500; + if (context.failswitch) { + interval -= (_uriList.length - 1) * 500; + } + if (interval > 5000) { + interval = 5000; + } + if (interval > 0) { global.setTimeout(function() { sendAndReceive(data, context, onsuccess, onerror); }, interval); - return true; } + else { + sendAndReceive(data, context, onsuccess, onerror); + } + return true; } return false; } @@ -4023,6 +4039,7 @@ TimeoutError.prototype.constructor = TimeoutError; function initService(stub) { var context = { retry: _retry, + retried: 0, idempotent: true, failswitch: true, timeout: _timeout, @@ -4136,6 +4153,7 @@ TimeoutError.prototype.constructor = TimeoutError; simple: _simple, timeout: _timeout, retry: _retry, + retried: 0, idempotent: _idempotent, failswitch: _failswitch, oneway: false, @@ -4364,6 +4382,7 @@ TimeoutError.prototype.constructor = TimeoutError; var context = { timeout: _timeout, retry: _retry, + retried: 0, idempotent: _idempotent, failswitch: _failswitch, oneway: false, @@ -4542,15 +4561,43 @@ TimeoutError.prototype.constructor = TimeoutError; _onerror = value; } } + function getOnFailswitch() { + return _onfailswitch; + } + function setOnFailswitch(value) { + if (typeof(value) === s_function) { + _onfailswitch = value; + } + } function getUri() { return _uri; } + function getUriList() { + return _uriList; + } + function setUriList(uriList) { + if (typeof(uriList) === s_string) { + _uriList = [uriList]; + } + else if (Array.isArray(uriList)) { + _uriList = uriList.slice(0); + _uriList.sort(function() { return Math.random() - 0.5; }); + } + else { + return; + } + _index = 0; + _uri = _uriList[_index]; + } function getFailswitch() { return _failswitch; } function setFailswitch(value) { _failswitch = !!value; } + function getFailround() { + return _failround; + } function getTimeout() { return _timeout; } @@ -4938,9 +4985,12 @@ TimeoutError.prototype.constructor = TimeoutError; Object.defineProperties(this, { '#': { value: autoId }, onerror: { get: getOnError, set: setOnError }, + onfailswitch: { get: getOnFailswitch, set: setOnFailswitch }, uri: { get: getUri }, + uriList: { get: getUriList, set: setUriList }, id: { get: getId }, failswitch: { get: getFailswitch, set: setFailswitch }, + failround: { get: getFailround }, timeout: { get: getTimeout, set: setTimeout }, retry: { get: getRetry, set: setRetry }, idempotent: { get: getIdempotent, set: setIdempotent }, @@ -4972,15 +5022,9 @@ TimeoutError.prototype.constructor = TimeoutError; } }); } - if (typeof(uri) === s_string) { - _uris = [uri]; - _index = 0; - useService(uri, functions); - } - else if (Array.isArray(uri)) { - _uris = uri; - _index = Math.floor(Math.random() * _uris.length); - useService(_uris[_index], functions); + if (uri) { + setUriList(uri); + useService(functions); } } } diff --git a/package.json b/package.json index 7869d72..5d6ff32 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.14", + "version": "2.0.15", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/Client.js b/src/Client.js index 8089e48..1802fa3 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Aug 24, 2016 * + * LastModified: Sep 4, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -43,7 +43,7 @@ // private members var _uri, - _uris = [], + _uriList = [], _index = -1, _byref = false, _simple = false, @@ -51,10 +51,12 @@ _retry = 10, _idempotent = false, _failswitch = false, + _failround = 0, _lock = false, _tasks = [], _useHarmonyMap = false, _onerror = noop, + _onfailswitch = noop, _filters = [], _batch = false, _batches = [], @@ -109,29 +111,43 @@ } function failswitch() { - var n = _uris.length; + var n = _uriList.length; if (n > 1) { - var i = _index + Math.floor(Math.random() * (n - 1)) + 1; + var i = _index + 1; if (i >= n) { - i %= n; + i = 0; + _failround++; } _index = i; - _uri = _uris[_index]; + _uri = _uriList[_index]; } + else { + _failround++; + } + _onfailswitch(self); } function retry(data, context, onsuccess, onerror) { if (context.failswitch) { failswitch(); } - if (context.idempotent) { - if (--context.retry >= 0) { - var interval = (context.retry >= 10) ? 500 : (10 - context.retry) * 500; + if (context.idempotent && (context.retried < context.retry)) { + var interval = ++context.retried * 500; + if (context.failswitch) { + interval -= (_uriList.length - 1) * 500; + } + if (interval > 5000) { + interval = 5000; + } + if (interval > 0) { global.setTimeout(function() { sendAndReceive(data, context, onsuccess, onerror); }, interval); - return true; } + else { + sendAndReceive(data, context, onsuccess, onerror); + } + return true; } return false; } @@ -139,6 +155,7 @@ function initService(stub) { var context = { retry: _retry, + retried: 0, idempotent: true, failswitch: true, timeout: _timeout, @@ -252,6 +269,7 @@ simple: _simple, timeout: _timeout, retry: _retry, + retried: 0, idempotent: _idempotent, failswitch: _failswitch, oneway: false, @@ -480,6 +498,7 @@ var context = { timeout: _timeout, retry: _retry, + retried: 0, idempotent: _idempotent, failswitch: _failswitch, oneway: false, @@ -658,15 +677,43 @@ _onerror = value; } } + function getOnFailswitch() { + return _onfailswitch; + } + function setOnFailswitch(value) { + if (typeof(value) === s_function) { + _onfailswitch = value; + } + } function getUri() { return _uri; } + function getUriList() { + return _uriList; + } + function setUriList(uriList) { + if (typeof(uriList) === s_string) { + _uriList = [uriList]; + } + else if (Array.isArray(uriList)) { + _uriList = uriList.slice(0); + _uriList.sort(function() { return Math.random() - 0.5; }); + } + else { + return; + } + _index = 0; + _uri = _uriList[_index]; + } function getFailswitch() { return _failswitch; } function setFailswitch(value) { _failswitch = !!value; } + function getFailround() { + return _failround; + } function getTimeout() { return _timeout; } @@ -1054,9 +1101,12 @@ Object.defineProperties(this, { '#': { value: autoId }, onerror: { get: getOnError, set: setOnError }, + onfailswitch: { get: getOnFailswitch, set: setOnFailswitch }, uri: { get: getUri }, + uriList: { get: getUriList, set: setUriList }, id: { get: getId }, failswitch: { get: getFailswitch, set: setFailswitch }, + failround: { get: getFailround }, timeout: { get: getTimeout, set: setTimeout }, retry: { get: getRetry, set: setRetry }, idempotent: { get: getIdempotent, set: setIdempotent }, @@ -1088,15 +1138,9 @@ } }); } - if (typeof(uri) === s_string) { - _uris = [uri]; - _index = 0; - useService(uri, functions); - } - else if (Array.isArray(uri)) { - _uris = uri; - _index = Math.floor(Math.random() * _uris.length); - useService(_uris[_index], functions); + if (uri) { + setUriList(uri); + useService(functions); } } } diff --git a/src/CopyRight.js b/src/CopyRight.js index 6b56003..35fc81f 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.14 +// Hprose for HTML5 v2.0.15 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From 5b53d17a6e1a7f3849e2d283edd2c3481461026c Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sat, 17 Sep 2016 18:28:44 +0800 Subject: [PATCH 42/86] Fixed timeout bug of HalfDuplex socket client. --- bower.json | 2 +- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 6 +++--- package.json | 2 +- src/CopyRight.js | 2 +- src/TcpClient.js | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/bower.json b/bower.json index d6df74d..8d04458 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.15", + "version": "2.0.16", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 281521f..9d5b086 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.15 +// Hprose for HTML5 v2.0.16 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -6,4 +6,4 @@ function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>16,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=o(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<1e5?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S: return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,o){function m(e,t){for(var r=0,n=$e.length;r=0;r--)e=$e[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),ot(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return ft.sendAndReceive(e,t)}function O(e,t,r,n){it(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Pe.length;if(e>1){var t=Ue+1;t>=e&&(t=0,qe++),Ue=t,xe=Pe[Ue]}else qe++;Je(ft)}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){O(t,r,n,i)},o):O(t,r,n,i),!0}return!1}function B(e){var t={retry:Le,retried:0,idempotent:!0,failswitch:!0,timeout:We,client:ft,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Xe.reject(r):Xe.resolve(e)};O(p,t,r,Xe.reject)}function E(e,t){return function(){return Ke?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==v&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return He?h.promise(function(i,o){Qe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Ye(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var g=h.readList();C(g,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(He=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Qe),Qe=[])}}function W(e,t,r){r.sync&&(He=!0);var n=h.promise(function(n,i){rt(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ve.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:We,retry:Le,retried:0,idempotent:De,failswitch:ze,oneway:!1,sync:!1,client:ft,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,g=null,v=e[++o].context.mode;if(v>=u.Raw&&(p=new c),h===s.TagResult){if(v===u.Serialized?p=f.readRaw():v>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(v>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(v>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),g=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=g}}catch(e){return void i(e)}n(e)},i)})}function q(){Ke=!0}function H(e){if(e=e||{},Ke=!1,He)return h.promise(function(t,r){Qe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ve.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(He=!0);var n=Ve;Ve=[];var i=h.promise(function(e,t){nt(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return Ye}function G(e){typeof e===y&&(Ye=e)}function Y(){return Je}function J(e){typeof e===y&&(Je=e)}function $(){return xe}function K(){return Pe}function V(e){if(typeof e===v)Pe=[e];else{if(!Array.isArray(e))return;Pe=e.slice(0),Pe.sort(function(){return Math.random()-.5})}Ue=0,xe=Pe[Ue]}function X(){return ze}function Z(e){ze=!!e}function ee(){return qe}function te(){return We}function re(e){We="number"==typeof e?0|e:0}function ne(){return Le}function ie(e){Le="number"==typeof e?0|e:0}function oe(){return De}function ae(e){De=!!e}function se(e){tt=!!e}function ue(){return tt}function ce(){return Ne}function fe(e){Ne=!!e}function le(){return Fe}function he(e){Fe=!!e}function pe(){return Ge}function ge(e){Ge=!!e}function ve(){return 0===$e.length?null:1===$e.length?$e[0]:$e.slice()}function de(e){$e.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&$e.push(e)}function we(e){var t=$e.indexOf(e);return t!==-1&&($e.splice(t,1),!0)}function me(){return $e}function be(e,r,n){n===t&&(typeof r===g&&(n=r,r=!1),r||(typeof e===g?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ft;return n&&(i={}),e||xe?(e&&(xe=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Xe.resolve(i),i):(a(B,i),Xe)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==y&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==y&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ze[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===et){if(Ze[e]){var i=Ze[e];for(r in i)je(i,r,n)}}else et.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(Ze[e],r,n)}function Ee(){return et}function Ae(){return P(ft,"#",[],!1)}function ke(e){at.push(e),rt=at.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Ce(e){st.push(e),nt=st.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return ke(e),ft}var xe,Pe=[],Ue=-1,Ne=!1,Fe=!1,We=3e4,Le=10,De=!1,ze=!1,qe=0,He=!1,Qe=[],Ge=!1,Ye=r,Je=r,$e=[],Ke=!1,Ve=[],Xe=new h,Ze=Object.create(null),et=null,tt=!0,rt=N,nt=z,it=T,ot=_,at=[],st=[],ut=[],ct=[],ft=this;Ae.sync=!0,Ae.idempotent=!0,Ae.failswitch=!0;var lt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Ce(e),lt}}}),ht=Object.create(null,{use:{value:function(e){return Ie(e),ht}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}});Object.defineProperties(this,{"#":{value:Ae},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:Ee},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ge},filter:{get:ve,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},use:{value:Me},batch:{value:lt},beforeFilter:{value:ht},afterFilter:{value:pt}}),o&&typeof o===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(ft[e]=o[e])}),n&&(V(n),be(i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=new Uint8Array(1);p[0]=s.TagEnd;var g="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,o){function l(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer); -}function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==f.CLOSING&&S.readyState!==f.CLOSED||d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,o=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),a.recycle(o),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +}function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==f.CLOSING&&S.readyState!==f.CLOSED||d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,o=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 51272dd..48b8a59 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 64f3ba0..5c7177a 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.15 +// Hprose for HTML5 v2.0.16 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -5781,7 +5781,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose tcp client for HTML5. * * * - * LastModified: Jul 14, 2016 * + * LastModified: Sep 17, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -6078,7 +6078,7 @@ TimeoutError.prototype.constructor = TimeoutError; if (timeout > 0) { conn.timeoutId = global.setTimeout(function() { self.clean(conn); - self.recycle(conn); + conn.destroy(); future.reject(new TimeoutError('timeout')); }, timeout); } diff --git a/package.json b/package.json index 5d6ff32..fbfd4e8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.15", + "version": "2.0.16", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 35fc81f..d82736c 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.15 +// Hprose for HTML5 v2.0.16 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/TcpClient.js b/src/TcpClient.js index 260b315..745ee06 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,7 +12,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Jul 14, 2016 * + * LastModified: Sep 17, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -309,7 +309,7 @@ if (timeout > 0) { conn.timeoutId = global.setTimeout(function() { self.clean(conn); - self.recycle(conn); + conn.destroy(); future.reject(new TimeoutError('timeout')); }, timeout); } From c5f41352a3dfbcaf8d457ffe7353ccb0ea1d0b36 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 28 Sep 2016 13:32:54 +0800 Subject: [PATCH 43/86] Fixed an error caused by https://bugs.webkit.org/show_bug.cgi?id=80797 --- bower.json | 2 +- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 22 +++++++++++----------- package.json | 2 +- src/BytesIO.js | 8 ++++---- src/CopyRight.js | 2 +- src/Helper.js | 12 ++++++------ 8 files changed, 27 insertions(+), 27 deletions(-) diff --git a/bower.json b/bower.json index 8d04458..a7224cd 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.16", + "version": "2.0.17", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 9d5b086..475d3ba 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.16 +// Hprose for HTML5 v2.0.17 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>16,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=o(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=65534){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<1e5?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S: +function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=o(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S: return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,o){function m(e,t){for(var r=0,n=$e.length;r=0;r--)e=$e[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),ot(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return ft.sendAndReceive(e,t)}function O(e,t,r,n){it(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Pe.length;if(e>1){var t=Ue+1;t>=e&&(t=0,qe++),Ue=t,xe=Pe[Ue]}else qe++;Je(ft)}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){O(t,r,n,i)},o):O(t,r,n,i),!0}return!1}function B(e){var t={retry:Le,retried:0,idempotent:!0,failswitch:!0,timeout:We,client:ft,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Xe.reject(r):Xe.resolve(e)};O(p,t,r,Xe.reject)}function E(e,t){return function(){return Ke?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==v&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return He?h.promise(function(i,o){Qe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Ye(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var g=h.readList();C(g,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(He=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Qe),Qe=[])}}function W(e,t,r){r.sync&&(He=!0);var n=h.promise(function(n,i){rt(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ve.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:We,retry:Le,retried:0,idempotent:De,failswitch:ze,oneway:!1,sync:!1,client:ft,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,g=null,v=e[++o].context.mode;if(v>=u.Raw&&(p=new c),h===s.TagResult){if(v===u.Serialized?p=f.readRaw():v>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(v>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(v>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),g=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=g}}catch(e){return void i(e)}n(e)},i)})}function q(){Ke=!0}function H(e){if(e=e||{},Ke=!1,He)return h.promise(function(t,r){Qe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ve.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(He=!0);var n=Ve;Ve=[];var i=h.promise(function(e,t){nt(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return Ye}function G(e){typeof e===y&&(Ye=e)}function Y(){return Je}function J(e){typeof e===y&&(Je=e)}function $(){return xe}function K(){return Pe}function V(e){if(typeof e===v)Pe=[e];else{if(!Array.isArray(e))return;Pe=e.slice(0),Pe.sort(function(){return Math.random()-.5})}Ue=0,xe=Pe[Ue]}function X(){return ze}function Z(e){ze=!!e}function ee(){return qe}function te(){return We}function re(e){We="number"==typeof e?0|e:0}function ne(){return Le}function ie(e){Le="number"==typeof e?0|e:0}function oe(){return De}function ae(e){De=!!e}function se(e){tt=!!e}function ue(){return tt}function ce(){return Ne}function fe(e){Ne=!!e}function le(){return Fe}function he(e){Fe=!!e}function pe(){return Ge}function ge(e){Ge=!!e}function ve(){return 0===$e.length?null:1===$e.length?$e[0]:$e.slice()}function de(e){$e.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&$e.push(e)}function we(e){var t=$e.indexOf(e);return t!==-1&&($e.splice(t,1),!0)}function me(){return $e}function be(e,r,n){n===t&&(typeof r===g&&(n=r,r=!1),r||(typeof e===g?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ft;return n&&(i={}),e||xe?(e&&(xe=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Xe.resolve(i),i):(a(B,i),Xe)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==y&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==y&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ze[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===et){if(Ze[e]){var i=Ze[e];for(r in i)je(i,r,n)}}else et.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(Ze[e],r,n)}function Ee(){return et}function Ae(){return P(ft,"#",[],!1)}function ke(e){at.push(e),rt=at.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Ce(e){st.push(e),nt=st.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return ke(e),ft}var xe,Pe=[],Ue=-1,Ne=!1,Fe=!1,We=3e4,Le=10,De=!1,ze=!1,qe=0,He=!1,Qe=[],Ge=!1,Ye=r,Je=r,$e=[],Ke=!1,Ve=[],Xe=new h,Ze=Object.create(null),et=null,tt=!0,rt=N,nt=z,it=T,ot=_,at=[],st=[],ut=[],ct=[],ft=this;Ae.sync=!0,Ae.idempotent=!0,Ae.failswitch=!0;var lt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Ce(e),lt}}}),ht=Object.create(null,{use:{value:function(e){return Ie(e),ht}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}});Object.defineProperties(this,{"#":{value:Ae},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:Ee},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ge},filter:{get:ve,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},use:{value:Me},batch:{value:lt},beforeFilter:{value:ht},afterFilter:{value:pt}}),o&&typeof o===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(ft[e]=o[e])}),n&&(V(n),be(i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=new Uint8Array(1);p[0]=s.TagEnd;var g="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,o){function l(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer); }function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==f.CLOSING&&S.readyState!==f.CLOSED||d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,o=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 48b8a59..652200d 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 5c7177a..f7c8172 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.16 +// Hprose for HTML5 v2.0.17 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -46,7 +46,7 @@ * * * hprose helper for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -88,17 +88,17 @@ bytes = new Uint8Array(bytes); } var n = bytes.length; - if (n < 100000) { + if (n < 0xFFFF) { return String.fromCharCode.apply(String, getCharCodes(bytes)); } - var remain = n & 0xFFFF; - var count = n >> 16; + var remain = n & 0x7FFF; + var count = n >> 15; var a = new Array(remain ? count + 1 : count); for (var i = 0; i < count; ++i) { - a[i] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(i << 16, (i + 1) << 16))); + a[i] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(i << 15, (i + 1) << 15))); } if (remain) { - a[count] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(count << 16, n))); + a[count] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(count << 15, n))); } return a.join(''); } @@ -1766,7 +1766,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose BytesIO for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1896,7 +1896,7 @@ TimeoutError.prototype.constructor = TimeoutError; function readLongString(bytes, n) { var buf = []; - var charCodes = new Array(0xFFFF); + var charCodes = new Array(0x8000); var i = 0, off = 0; for (var len = bytes.length; i < n && off < len; i++) { var unit = bytes[off++]; @@ -1952,7 +1952,7 @@ TimeoutError.prototype.constructor = TimeoutError; default: throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); } - if (i >= 65534) { + if (i >= 0x7FFF - 1) { var size = i + 1; charCodes.length = size; buf.push(String.fromCharCode.apply(String, charCodes)); @@ -1970,7 +1970,7 @@ TimeoutError.prototype.constructor = TimeoutError; function readString(bytes, n) { if (n === undefined || n === null || (n < 0)) { n = bytes.length; } if (n === 0) { return ['', 0]; } - return ((n < 100000) ? + return ((n < 0xFFFF) ? readShortString(bytes, n) : readLongString(bytes, n)); } diff --git a/package.json b/package.json index fbfd4e8..1a36124 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.16", + "version": "2.0.17", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/BytesIO.js b/src/BytesIO.js index 031e5f1..b61bd1b 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -13,7 +13,7 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -143,7 +143,7 @@ function readLongString(bytes, n) { var buf = []; - var charCodes = new Array(0xFFFF); + var charCodes = new Array(0x8000); var i = 0, off = 0; for (var len = bytes.length; i < n && off < len; i++) { var unit = bytes[off++]; @@ -199,7 +199,7 @@ default: throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); } - if (i >= 65534) { + if (i >= 0x7FFF - 1) { var size = i + 1; charCodes.length = size; buf.push(String.fromCharCode.apply(String, charCodes)); @@ -217,7 +217,7 @@ function readString(bytes, n) { if (n === undefined || n === null || (n < 0)) { n = bytes.length; } if (n === 0) { return ['', 0]; } - return ((n < 100000) ? + return ((n < 0xFFFF) ? readShortString(bytes, n) : readLongString(bytes, n)); } diff --git a/src/CopyRight.js b/src/CopyRight.js index d82736c..6521fa3 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.16 +// Hprose for HTML5 v2.0.17 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Helper.js b/src/Helper.js index fb0ad72..e2a7149 100644 --- a/src/Helper.js +++ b/src/Helper.js @@ -13,7 +13,7 @@ * * * hprose helper for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -55,17 +55,17 @@ bytes = new Uint8Array(bytes); } var n = bytes.length; - if (n < 100000) { + if (n < 0xFFFF) { return String.fromCharCode.apply(String, getCharCodes(bytes)); } - var remain = n & 0xFFFF; - var count = n >> 16; + var remain = n & 0x7FFF; + var count = n >> 15; var a = new Array(remain ? count + 1 : count); for (var i = 0; i < count; ++i) { - a[i] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(i << 16, (i + 1) << 16))); + a[i] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(i << 15, (i + 1) << 15))); } if (remain) { - a[count] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(count << 16, n))); + a[count] = String.fromCharCode.apply(String, getCharCodes(bytes.subarray(count << 15, n))); } return a.join(''); } From 2af51aa6bcd05b61e655225dba7a6d47ce0a4166 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 28 Sep 2016 19:30:48 +0800 Subject: [PATCH 44/86] =?UTF-8?q?Added=20=E5=BE=AE=E4=BF=A1=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/hprose-html5.js | 6 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 75 ++++++++++++++++++++++++---------------- src/Client.js | 6 ++-- src/Helper.js | 16 +++++++++ src/HttpClient.js | 4 +-- src/Loader.js | 4 +-- src/TcpClient.js | 12 +++---- src/TimeoutError.js | 26 ++++++++------ src/WebSocketClient.js | 6 ++-- 10 files changed, 94 insertions(+), 63 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 475d3ba..811e64d 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -function TimeoutError(e){Error.call(this),this.message=e,this.name=TimeoutError.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,TimeoutError)}!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=o(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function E(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function A(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:E},lastIndexOf:{value:A},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return E(this,e,t)}},lastIndexOf:{value:function(e,t){return A(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?E:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S: -return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return E(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return E(e);default:r(t)}}function E(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,o){function m(e,t){for(var r=0,n=$e.length;r=0;r--)e=$e[r].inputFilter(e,t);return e}function T(e,t){return e=m(e,t),ot(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return ft.sendAndReceive(e,t)}function O(e,t,r,n){it(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Pe.length;if(e>1){var t=Ue+1;t>=e&&(t=0,qe++),Ue=t,xe=Pe[Ue]}else qe++;Je(ft)}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){O(t,r,n,i)},o):O(t,r,n,i),!0}return!1}function B(e){var t={retry:Le,retried:0,idempotent:!0,failswitch:!0,timeout:We,client:ft,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Xe.reject(r):Xe.resolve(e)};O(p,t,r,Xe.reject)}function E(e,t){return function(){return Ke?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==v&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return He?h.promise(function(i,o){Qe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Ye(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var g=h.readList();C(g,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(He=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Qe),Qe=[])}}function W(e,t,r){r.sync&&(He=!0);var n=h.promise(function(n,i){rt(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ve.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:We,retry:Le,retried:0,idempotent:De,failswitch:ze,oneway:!1,sync:!1,client:ft,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,g=null,v=e[++o].context.mode;if(v>=u.Raw&&(p=new c),h===s.TagResult){if(v===u.Serialized?p=f.readRaw():v>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(v>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(v>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),g=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=g}}catch(e){return void i(e)}n(e)},i)})}function q(){Ke=!0}function H(e){if(e=e||{},Ke=!1,He)return h.promise(function(t,r){Qe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ve.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(He=!0);var n=Ve;Ve=[];var i=h.promise(function(e,t){nt(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return Ye}function G(e){typeof e===y&&(Ye=e)}function Y(){return Je}function J(e){typeof e===y&&(Je=e)}function $(){return xe}function K(){return Pe}function V(e){if(typeof e===v)Pe=[e];else{if(!Array.isArray(e))return;Pe=e.slice(0),Pe.sort(function(){return Math.random()-.5})}Ue=0,xe=Pe[Ue]}function X(){return ze}function Z(e){ze=!!e}function ee(){return qe}function te(){return We}function re(e){We="number"==typeof e?0|e:0}function ne(){return Le}function ie(e){Le="number"==typeof e?0|e:0}function oe(){return De}function ae(e){De=!!e}function se(e){tt=!!e}function ue(){return tt}function ce(){return Ne}function fe(e){Ne=!!e}function le(){return Fe}function he(e){Fe=!!e}function pe(){return Ge}function ge(e){Ge=!!e}function ve(){return 0===$e.length?null:1===$e.length?$e[0]:$e.slice()}function de(e){$e.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&$e.push(e)}function we(e){var t=$e.indexOf(e);return t!==-1&&($e.splice(t,1),!0)}function me(){return $e}function be(e,r,n){n===t&&(typeof r===g&&(n=r,r=!1),r||(typeof e===g?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ft;return n&&(i={}),e||xe?(e&&(xe=e),(typeof r===v||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Xe.resolve(i),i):(a(B,i),Xe)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==v)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==y&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==y&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==v)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==y)return void delete Ze[e];r=n}if(typeof r===y&&(n=r,r=null),null===r)if(null===et){if(Ze[e]){var i=Ze[e];for(r in i)je(i,r,n)}}else et.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(Ze[e],r,n)}function Ee(){return et}function Ae(){return P(ft,"#",[],!1)}function ke(e){at.push(e),rt=at.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Ce(e){st.push(e),nt=st.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return ke(e),ft}var xe,Pe=[],Ue=-1,Ne=!1,Fe=!1,We=3e4,Le=10,De=!1,ze=!1,qe=0,He=!1,Qe=[],Ge=!1,Ye=r,Je=r,$e=[],Ke=!1,Ve=[],Xe=new h,Ze=Object.create(null),et=null,tt=!0,rt=N,nt=z,it=T,ot=_,at=[],st=[],ut=[],ct=[],ft=this;Ae.sync=!0,Ae.idempotent=!0,Ae.failswitch=!0;var lt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Ce(e),lt}}}),ht=Object.create(null,{use:{value:function(e){return Ie(e),ht}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}});Object.defineProperties(this,{"#":{value:Ae},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:Ee},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ge},filter:{get:ve,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},use:{value:Me},batch:{value:lt},beforeFilter:{value:ht},afterFilter:{value:pt}}),o&&typeof o===w&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(ft[e]=o[e])}),n&&(V(n),be(i))}function i(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=new Uint8Array(1);p[0]=s.TagEnd;var g="boolean",v="string",d="number",y="function",w="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:g}})}function i(e){var t=document.createElement("a");if(t.href=e,"http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,o){function l(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer); -}function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new f(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==f.CLOSING&&S.readyState!==f.CLOSED||d();var r=l(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof f)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=document.createElement("a");if(t.href=e,"ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=document.createElement("a");t.href=e;var r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError;Object.defineProperties(i.prototype,{create:{value:function(){var t=document.createElement("a");t.href=this.uri;var r=t.protocol;t.protocol="http:";var n,i=t.hostname,o=parseInt(t.port,10);if("tcp:"===r||"tcp4:"===r||"tcp6:"===r)n=!1;else{if("tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("Unsupported "+r+" protocol!");n=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:n,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e.hprose)}(this); \ No newline at end of file +!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=o(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){ +case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=$e.length;r=0;r--)e=$e[r].inputFilter(e,t);return e}function T(e,t){return e=p(e,t),ot(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return ft.sendAndReceive(e,t)}function O(e,t,r,n){it(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Pe.length;if(e>1){var t=Ue+1;t>=e&&(t=0,qe++),Ue=t,xe=Pe[Ue]}else qe++;Je(ft)}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){O(t,r,n,i)},o):O(t,r,n,i),!0}return!1}function B(e){var t={retry:Le,retried:0,idempotent:!0,failswitch:!0,timeout:We,client:ft,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Xe.reject(r):Xe.resolve(e)};O(g,t,r,Xe.reject)}function A(e,t){return function(){return Ke?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return He?h.promise(function(i,o){Qe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Ye(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var g=h.readList();C(g,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(He=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Qe),Qe=[])}}function W(e,t,r){r.sync&&(He=!0);var n=h.promise(function(n,i){rt(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ve.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:We,retry:Le,retried:0,idempotent:De,failswitch:ze,oneway:!1,sync:!1,client:ft,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,g=null,v=e[++o].context.mode;if(v>=u.Raw&&(p=new c),h===s.TagResult){if(v===u.Serialized?p=f.readRaw():v>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(v>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(v>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),g=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=g}}catch(e){return void i(e)}n(e)},i)})}function q(){Ke=!0}function H(e){if(e=e||{},Ke=!1,He)return h.promise(function(t,r){Qe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ve.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(He=!0);var n=Ve;Ve=[];var i=h.promise(function(e,t){nt(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return Ye}function G(e){typeof e===w&&(Ye=e)}function Y(){return Je}function J(e){typeof e===w&&(Je=e)}function $(){return xe}function K(){return Pe}function V(e){if(typeof e===d)Pe=[e];else{if(!Array.isArray(e))return;Pe=e.slice(0),Pe.sort(function(){return Math.random()-.5})}Ue=0,xe=Pe[Ue]}function X(){return ze}function Z(e){ze=!!e}function ee(){return qe}function te(){return We}function re(e){We="number"==typeof e?0|e:0}function ne(){return Le}function ie(e){Le="number"==typeof e?0|e:0}function oe(){return De}function ae(e){De=!!e}function se(e){tt=!!e}function ue(){return tt}function ce(){return Ne}function fe(e){Ne=!!e}function le(){return Fe}function he(e){Fe=!!e}function pe(){return Ge}function ge(e){Ge=!!e}function ve(){return 0===$e.length?null:1===$e.length?$e[0]:$e.slice()}function de(e){$e.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&$e.push(e)}function we(e){var t=$e.indexOf(e);return t!==-1&&($e.splice(t,1),!0)}function me(){return $e}function be(e,r,n){n===t&&(typeof r===v&&(n=r,r=!1),r||(typeof e===v?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ft;return n&&(i={}),e||xe?(e&&(xe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Xe.resolve(i),i):(a(B,i),Xe)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==w&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==w&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Ze[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===et){if(Ze[e]){var i=Ze[e];for(r in i)je(i,r,n)}}else et.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(Ze[e],r,n)}function Ae(){return et}function Ee(){return P(ft,"#",[],!1)}function ke(e){at.push(e),rt=at.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Ce(e){st.push(e),nt=st.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return ke(e),ft}var xe,Pe=[],Ue=-1,Ne=!1,Fe=!1,We=3e4,Le=10,De=!1,ze=!1,qe=0,He=!1,Qe=[],Ge=!1,Ye=r,Je=r,$e=[],Ke=!1,Ve=[],Xe=new h,Ze=Object.create(null),et=null,tt=!0,rt=N,nt=z,it=T,ot=_,at=[],st=[],ut=[],ct=[],ft=this;Ee.sync=!0,Ee.idempotent=!0,Ee.failswitch=!0;var lt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Ce(e),lt}}}),ht=Object.create(null,{use:{value:function(e){return Ie(e),ht}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}});Object.defineProperties(this,{"#":{value:Ee},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:Ae},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ge},filter:{get:ve,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},use:{value:Me},batch:{value:lt},beforeFilter:{value:ht},afterFilter:{value:pt}}),o&&typeof o===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(ft[e]=o[e])}),n&&(V(n),be(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,g=new Uint8Array(1);g[0]=s.TagEnd;var v="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:g}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,o){ +function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 652200d..3d954af 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index f7c8172..6bd0938 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -112,10 +112,26 @@ return data; } + var parseuri = function(url) { + var pattern = new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); + var matches = url.match(pattern); + var host = matches[4].split(':', 2); + return { + protocol: matches[1], + host: matches[4], + hostname: host[0], + port: parseInt(host[1], 10) || 0, + path: matches[5], + query: matches[7], + fragment: matches[9] + }; + } + global.hprose.generic = generic; global.hprose.toBinaryString = toBinaryString; global.hprose.toUint8Array = toUint8Array; global.hprose.toArray = toArray; + global.hprose.parseuri = parseuri; })(this); @@ -852,23 +868,26 @@ * * * TimeoutError for HTML5. * * * - * LastModified: Jul 17, 2015 * + * LastModified: Mar 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -function TimeoutError(message) { - Error.call(this); - this.message = message; - this.name = TimeoutError.name; - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, TimeoutError); +(function(global) { + if (typeof global.TimeoutError !== 'function') { + var TimeoutError = function(message) { + Error.call(this); + this.message = message; + this.name = TimeoutError.name; + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, TimeoutError); + } + } + TimeoutError.prototype = Object.create(Error.prototype); + TimeoutError.prototype.constructor = TimeoutError; + global.TimeoutError = TimeoutError; } -} - -TimeoutError.prototype = Object.create(Error.prototype); -TimeoutError.prototype.constructor = TimeoutError; - +})(this); /**********************************************************\ | | | hprose | @@ -3896,7 +3915,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose client for HTML5. * * * - * LastModified: Sep 4, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -3911,6 +3930,7 @@ TimeoutError.prototype.constructor = TimeoutError; var Writer = global.hprose.Writer; var Reader = global.hprose.Reader; var Future = global.hprose.Future; + var parseuri = global.hprose.parseuri; var GETFUNCTIONS = new Uint8Array(1); GETFUNCTIONS[0] = Tags.TagEnd; @@ -5030,8 +5050,7 @@ TimeoutError.prototype.constructor = TimeoutError; } function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; + var parser = parseuri(uri); var protocol = parser.protocol; if (protocol === 'http:' || protocol === 'https:' || @@ -5106,6 +5125,7 @@ TimeoutError.prototype.constructor = TimeoutError; var TimeoutError = global.TimeoutError; var localfile = (global.location !== undefined && global.location.protocol === 'file:'); var corsSupport = (!localfile && 'withCredentials' in new XMLHttpRequest()); + var parseuri = global.hprose.parseuri; function noop(){} @@ -5241,8 +5261,7 @@ TimeoutError.prototype.constructor = TimeoutError; } function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; + var parser = parseuri(uri); if (parser.protocol === 'http:' || parser.protocol === 'https:') { return; @@ -5283,7 +5302,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose websocket client for HTML5. * * * - * LastModified: Jul 14, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5295,6 +5314,7 @@ TimeoutError.prototype.constructor = TimeoutError; var Client = global.hprose.Client; var Future = global.hprose.Future; var TimeoutError = global.TimeoutError; + var parseuri = global.hprose.parseuri; var WebSocket = global.WebSocket || global.MozWebSocket; @@ -5424,8 +5444,7 @@ TimeoutError.prototype.constructor = TimeoutError; } function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; + var parser = parseuri(uri); if (parser.protocol === 'ws:' || parser.protocol === 'wss:') { return; @@ -5781,7 +5800,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose tcp client for HTML5. * * * - * LastModified: Sep 17, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5795,6 +5814,7 @@ TimeoutError.prototype.constructor = TimeoutError; var BytesIO = global.hprose.BytesIO; var Future = global.hprose.Future; var TimeoutError = global.TimeoutError; + var parseuri = global.hprose.parseuri; function noop(){} @@ -5855,12 +5875,8 @@ TimeoutError.prototype.constructor = TimeoutError; Object.defineProperties(TcpTransporter.prototype, { create: { value: function() { - var parser = document.createElement('a'); - parser.href = this.uri; + var parser = parseuri(this.uri); var protocol = parser.protocol; - // HTMLAnchorElement can't parse TCP protocol - // replace to HTTP can be correctly resolved. - parser.protocol = "http:"; var address = parser.hostname; var port = parseInt(parser.port, 10); var tls; @@ -6208,8 +6224,7 @@ TimeoutError.prototype.constructor = TimeoutError; } function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; + var parser = parseuri(uri); var protocol = parser.protocol; if (protocol === 'tcp:' || protocol === 'tcp4:'|| @@ -6352,7 +6367,7 @@ TimeoutError.prototype.constructor = TimeoutError; * * * hprose CommonJS/AMD/CMD loader for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -6396,7 +6411,7 @@ TimeoutError.prototype.constructor = TimeoutError; define('hprose', [], function() { return global.hprose; }); } } - if (typeof module === 'object' && typeof module.exports === 'object') { + if (typeof module === 'object') { module.exports = global.hprose; } })(this); diff --git a/src/Client.js b/src/Client.js index 1802fa3..8542434 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Sep 4, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -27,6 +27,7 @@ var Writer = global.hprose.Writer; var Reader = global.hprose.Reader; var Future = global.hprose.Future; + var parseuri = global.hprose.parseuri; var GETFUNCTIONS = new Uint8Array(1); GETFUNCTIONS[0] = Tags.TagEnd; @@ -1146,8 +1147,7 @@ } function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; + var parser = parseuri(uri); var protocol = parser.protocol; if (protocol === 'http:' || protocol === 'https:' || diff --git a/src/Helper.js b/src/Helper.js index e2a7149..685cb3c 100644 --- a/src/Helper.js +++ b/src/Helper.js @@ -79,9 +79,25 @@ return data; } + var parseuri = function(url) { + var pattern = new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"); + var matches = url.match(pattern); + var host = matches[4].split(':', 2); + return { + protocol: matches[1], + host: matches[4], + hostname: host[0], + port: parseInt(host[1], 10) || 0, + path: matches[5], + query: matches[7], + fragment: matches[9] + }; + } + global.hprose.generic = generic; global.hprose.toBinaryString = toBinaryString; global.hprose.toUint8Array = toUint8Array; global.hprose.toArray = toArray; + global.hprose.parseuri = parseuri; })(this); diff --git a/src/HttpClient.js b/src/HttpClient.js index d44fef5..d1982f4 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -26,6 +26,7 @@ var TimeoutError = global.TimeoutError; var localfile = (global.location !== undefined && global.location.protocol === 'file:'); var corsSupport = (!localfile && 'withCredentials' in new XMLHttpRequest()); + var parseuri = global.hprose.parseuri; function noop(){} @@ -161,8 +162,7 @@ } function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; + var parser = parseuri(uri); if (parser.protocol === 'http:' || parser.protocol === 'https:') { return; diff --git a/src/Loader.js b/src/Loader.js index 53e3774..5f714bc 100644 --- a/src/Loader.js +++ b/src/Loader.js @@ -13,7 +13,7 @@ * * * hprose CommonJS/AMD/CMD loader for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -57,7 +57,7 @@ define('hprose', [], function() { return global.hprose; }); } } - if (typeof module === 'object' && typeof module.exports === 'object') { + if (typeof module === 'object') { module.exports = global.hprose; } })(this); diff --git a/src/TcpClient.js b/src/TcpClient.js index 745ee06..983d2c7 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,7 +12,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Sep 17, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -26,6 +26,7 @@ var BytesIO = global.hprose.BytesIO; var Future = global.hprose.Future; var TimeoutError = global.TimeoutError; + var parseuri = global.hprose.parseuri; function noop(){} @@ -86,12 +87,8 @@ Object.defineProperties(TcpTransporter.prototype, { create: { value: function() { - var parser = document.createElement('a'); - parser.href = this.uri; + var parser = parseuri(this.uri); var protocol = parser.protocol; - // HTMLAnchorElement can't parse TCP protocol - // replace to HTTP can be correctly resolved. - parser.protocol = "http:"; var address = parser.hostname; var port = parseInt(parser.port, 10); var tls; @@ -439,8 +436,7 @@ } function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; + var parser = parseuri(uri); var protocol = parser.protocol; if (protocol === 'tcp:' || protocol === 'tcp4:'|| diff --git a/src/TimeoutError.js b/src/TimeoutError.js index b4397ee..301c5b3 100644 --- a/src/TimeoutError.js +++ b/src/TimeoutError.js @@ -13,19 +13,23 @@ * * * TimeoutError for HTML5. * * * - * LastModified: Jul 17, 2015 * + * LastModified: Mar 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -function TimeoutError(message) { - Error.call(this); - this.message = message; - this.name = TimeoutError.name; - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, TimeoutError); +(function(global) { + if (typeof global.TimeoutError !== 'function') { + var TimeoutError = function(message) { + Error.call(this); + this.message = message; + this.name = TimeoutError.name; + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, TimeoutError); + } + } + TimeoutError.prototype = Object.create(Error.prototype); + TimeoutError.prototype.constructor = TimeoutError; + global.TimeoutError = TimeoutError; } -} - -TimeoutError.prototype = Object.create(Error.prototype); -TimeoutError.prototype.constructor = TimeoutError; +})(this); \ No newline at end of file diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index 82a3965..58761eb 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Jul 14, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -24,6 +24,7 @@ var Client = global.hprose.Client; var Future = global.hprose.Future; var TimeoutError = global.TimeoutError; + var parseuri = global.hprose.parseuri; var WebSocket = global.WebSocket || global.MozWebSocket; @@ -153,8 +154,7 @@ } function checkuri(uri) { - var parser = document.createElement('a'); - parser.href = uri; + var parser = parseuri(uri); if (parser.protocol === 'ws:' || parser.protocol === 'wss:') { return; From 79f26ea9c937b11cfa63f087f0e8b29096cd7ffa Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 28 Sep 2016 20:08:05 +0800 Subject: [PATCH 45/86] Try to fixed can't find setTImeout in webpack --- dist/hprose-html5.js | 2 +- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 12 ++++++------ src/setImmediate.js | 12 ++++++------ 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 811e64d..51640a6 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}},u.setTimeout=function(){return function(){var t=o(arguments);return e.setTimeout(r(i,t),0),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){ +!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){ case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=$e.length;r=0;r--)e=$e[r].inputFilter(e,t);return e}function T(e,t){return e=p(e,t),ot(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return ft.sendAndReceive(e,t)}function O(e,t,r,n){it(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Pe.length;if(e>1){var t=Ue+1;t>=e&&(t=0,qe++),Ue=t,xe=Pe[Ue]}else qe++;Je(ft)}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){O(t,r,n,i)},o):O(t,r,n,i),!0}return!1}function B(e){var t={retry:Le,retried:0,idempotent:!0,failswitch:!0,timeout:We,client:ft,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Xe.reject(r):Xe.resolve(e)};O(g,t,r,Xe.reject)}function A(e,t){return function(){return Ke?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return He?h.promise(function(i,o){Qe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Ye(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var g=h.readList();C(g,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(He=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Qe),Qe=[])}}function W(e,t,r){r.sync&&(He=!0);var n=h.promise(function(n,i){rt(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ve.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:We,retry:Le,retried:0,idempotent:De,failswitch:ze,oneway:!1,sync:!1,client:ft,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,g=null,v=e[++o].context.mode;if(v>=u.Raw&&(p=new c),h===s.TagResult){if(v===u.Serialized?p=f.readRaw():v>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(v>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(v>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),g=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=g}}catch(e){return void i(e)}n(e)},i)})}function q(){Ke=!0}function H(e){if(e=e||{},Ke=!1,He)return h.promise(function(t,r){Qe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ve.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(He=!0);var n=Ve;Ve=[];var i=h.promise(function(e,t){nt(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return Ye}function G(e){typeof e===w&&(Ye=e)}function Y(){return Je}function J(e){typeof e===w&&(Je=e)}function $(){return xe}function K(){return Pe}function V(e){if(typeof e===d)Pe=[e];else{if(!Array.isArray(e))return;Pe=e.slice(0),Pe.sort(function(){return Math.random()-.5})}Ue=0,xe=Pe[Ue]}function X(){return ze}function Z(e){ze=!!e}function ee(){return qe}function te(){return We}function re(e){We="number"==typeof e?0|e:0}function ne(){return Le}function ie(e){Le="number"==typeof e?0|e:0}function oe(){return De}function ae(e){De=!!e}function se(e){tt=!!e}function ue(){return tt}function ce(){return Ne}function fe(e){Ne=!!e}function le(){return Fe}function he(e){Fe=!!e}function pe(){return Ge}function ge(e){Ge=!!e}function ve(){return 0===$e.length?null:1===$e.length?$e[0]:$e.slice()}function de(e){$e.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&$e.push(e)}function we(e){var t=$e.indexOf(e);return t!==-1&&($e.splice(t,1),!0)}function me(){return $e}function be(e,r,n){n===t&&(typeof r===v&&(n=r,r=!1),r||(typeof e===v?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ft;return n&&(i={}),e||xe?(e&&(xe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Xe.resolve(i),i):(a(B,i),Xe)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==w&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==w&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Ze[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===et){if(Ze[e]){var i=Ze[e];for(r in i)je(i,r,n)}}else et.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(Ze[e],r,n)}function Ae(){return et}function Ee(){return P(ft,"#",[],!1)}function ke(e){at.push(e),rt=at.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Ce(e){st.push(e),nt=st.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return ke(e),ft}var xe,Pe=[],Ue=-1,Ne=!1,Fe=!1,We=3e4,Le=10,De=!1,ze=!1,qe=0,He=!1,Qe=[],Ge=!1,Ye=r,Je=r,$e=[],Ke=!1,Ve=[],Xe=new h,Ze=Object.create(null),et=null,tt=!0,rt=N,nt=z,it=T,ot=_,at=[],st=[],ut=[],ct=[],ft=this;Ee.sync=!0,Ee.idempotent=!0,Ee.failswitch=!0;var lt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Ce(e),lt}}}),ht=Object.create(null,{use:{value:function(e){return Ie(e),ht}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}});Object.defineProperties(this,{"#":{value:Ee},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:Ae},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ge},filter:{get:ve,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},use:{value:Me},batch:{value:lt},beforeFilter:{value:ht},afterFilter:{value:pt}}),o&&typeof o===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(ft[e]=o[e])}),n&&(V(n),be(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,g=new Uint8Array(1);g[0]=s.TagEnd;var v="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:g}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,o){ function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 3d954af..ea14f31 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 6bd0938..e69e36a 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -903,7 +903,7 @@ * * * setImmediate for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1028,18 +1028,18 @@ }; }; + // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. + var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); + attachTo = (attachTo && attachTo.setTimeout ? attachTo : global); + polifill.setTimeout = function() { return function() { var handleId = create(arguments); - global.setTimeout( wrap( run, handleId ), 0 ); + attachTo.setTimeout( wrap( run, handleId ), 0 ); return handleId; }; }; - // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. - var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); - attachTo = (attachTo && attachTo.setTimeout ? attachTo : global); - // Don't get fooled by e.g. browserify environments. // For Node.js before 0.9 if (typeof(global.process) !== 'undefined' && diff --git a/src/setImmediate.js b/src/setImmediate.js index fda6331..1e872e4 100644 --- a/src/setImmediate.js +++ b/src/setImmediate.js @@ -13,7 +13,7 @@ * * * setImmediate for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 28, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -138,18 +138,18 @@ }; }; + // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. + var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); + attachTo = (attachTo && attachTo.setTimeout ? attachTo : global); + polifill.setTimeout = function() { return function() { var handleId = create(arguments); - global.setTimeout( wrap( run, handleId ), 0 ); + attachTo.setTimeout( wrap( run, handleId ), 0 ); return handleId; }; }; - // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. - var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); - attachTo = (attachTo && attachTo.setTimeout ? attachTo : global); - // Don't get fooled by e.g. browserify environments. // For Node.js before 0.9 if (typeof(global.process) !== 'undefined' && From 509ba700f6f42d92a484c63730a502495e90e4c0 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 29 Sep 2016 10:43:37 +0800 Subject: [PATCH 46/86] Fixed can't find global object in webpack --- bower.json | 2 +- dist/hprose-html5.js | 8 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 90 +++++++++++++++++++------------------- package.json | 2 +- src/APICloudTcpSocket.js | 4 +- src/Base64.js | 4 +- src/BytesIO.js | 4 +- src/ChromeTcpSocket.js | 4 +- src/ClassManager.js | 4 +- src/Client.js | 4 +- src/CopyRight.js | 2 +- src/Formatter.js | 4 +- src/Future.js | 4 +- src/HarmonyMaps.js | 4 +- src/Helper.js | 4 +- src/HttpClient.js | 4 +- src/Init.js | 4 +- src/JSONRPCClientFilter.js | 4 +- src/Loader.js | 4 +- src/Polyfill.js | 4 +- src/Reader.js | 4 +- src/ResultMode.js | 4 +- src/Tags.js | 4 +- src/TcpClient.js | 4 +- src/TimeoutError.js | 4 +- src/WebSocketClient.js | 4 +- src/Writer.js | 4 +- src/setImmediate.js | 4 +- test/Future.Test.js | 2 +- 30 files changed, 100 insertions(+), 100 deletions(-) diff --git a/bower.json b/bower.json index a7224cd..68879c2 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.17", + "version": "2.0.18", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 51640a6..8b60cee 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.17 +// Hprose for HTML5 v2.0.18 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:v},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:g},resolve:{value:u},reject:{value:s}}))}(this),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),g=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,g),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){ -case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function v(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=$e.length;r=0;r--)e=$e[r].inputFilter(e,t);return e}function T(e,t){return e=p(e,t),ot(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return ft.sendAndReceive(e,t)}function O(e,t,r,n){it(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Pe.length;if(e>1){var t=Ue+1;t>=e&&(t=0,qe++),Ue=t,xe=Pe[Ue]}else qe++;Je(ft)}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){O(t,r,n,i)},o):O(t,r,n,i),!0}return!1}function B(e){var t={retry:Le,retried:0,idempotent:!0,failswitch:!0,timeout:We,client:ft,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Xe.reject(r):Xe.resolve(e)};O(g,t,r,Xe.reject)}function A(e,t){return function(){return Ke?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return He?h.promise(function(i,o){Qe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Ye(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var g=h.readList();C(g,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(He=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Qe),Qe=[])}}function W(e,t,r){r.sync&&(He=!0);var n=h.promise(function(n,i){rt(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ve.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:We,retry:Le,retried:0,idempotent:De,failswitch:ze,oneway:!1,sync:!1,client:ft,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,g=null,v=e[++o].context.mode;if(v>=u.Raw&&(p=new c),h===s.TagResult){if(v===u.Serialized?p=f.readRaw():v>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(v>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(v>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),g=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));v>=u.Raw?(v===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=g}}catch(e){return void i(e)}n(e)},i)})}function q(){Ke=!0}function H(e){if(e=e||{},Ke=!1,He)return h.promise(function(t,r){Qe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ve.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(He=!0);var n=Ve;Ve=[];var i=h.promise(function(e,t){nt(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return Ye}function G(e){typeof e===w&&(Ye=e)}function Y(){return Je}function J(e){typeof e===w&&(Je=e)}function $(){return xe}function K(){return Pe}function V(e){if(typeof e===d)Pe=[e];else{if(!Array.isArray(e))return;Pe=e.slice(0),Pe.sort(function(){return Math.random()-.5})}Ue=0,xe=Pe[Ue]}function X(){return ze}function Z(e){ze=!!e}function ee(){return qe}function te(){return We}function re(e){We="number"==typeof e?0|e:0}function ne(){return Le}function ie(e){Le="number"==typeof e?0|e:0}function oe(){return De}function ae(e){De=!!e}function se(e){tt=!!e}function ue(){return tt}function ce(){return Ne}function fe(e){Ne=!!e}function le(){return Fe}function he(e){Fe=!!e}function pe(){return Ge}function ge(e){Ge=!!e}function ve(){return 0===$e.length?null:1===$e.length?$e[0]:$e.slice()}function de(e){$e.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&$e.push(e)}function we(e){var t=$e.indexOf(e);return t!==-1&&($e.splice(t,1),!0)}function me(){return $e}function be(e,r,n){n===t&&(typeof r===v&&(n=r,r=!1),r||(typeof e===v?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ft;return n&&(i={}),e||xe?(e&&(xe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Xe.resolve(i),i):(a(B,i),Xe)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==w&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==w&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Ze[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===et){if(Ze[e]){var i=Ze[e];for(r in i)je(i,r,n)}}else et.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(Ze[e],r,n)}function Ae(){return et}function Ee(){return P(ft,"#",[],!1)}function ke(e){at.push(e),rt=at.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Ce(e){st.push(e),nt=st.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return ke(e),ft}var xe,Pe=[],Ue=-1,Ne=!1,Fe=!1,We=3e4,Le=10,De=!1,ze=!1,qe=0,He=!1,Qe=[],Ge=!1,Ye=r,Je=r,$e=[],Ke=!1,Ve=[],Xe=new h,Ze=Object.create(null),et=null,tt=!0,rt=N,nt=z,it=T,ot=_,at=[],st=[],ut=[],ct=[],ft=this;Ee.sync=!0,Ee.idempotent=!0,Ee.failswitch=!0;var lt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Ce(e),lt}}}),ht=Object.create(null,{use:{value:function(e){return Ie(e),ht}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}});Object.defineProperties(this,{"#":{value:Ee},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:Ae},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ge},filter:{get:ve,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},use:{value:Me},batch:{value:lt},beforeFilter:{value:ht},afterFilter:{value:pt}}),o&&typeof o===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(ft[e]=o[e])}),n&&(V(n),be(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,g=new Uint8Array(1);g[0]=s.TagEnd;var v="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function v(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:v},onRequestProgress:{get:d,set:v},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:g}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this),function(e,t){"use strict";function r(){}function n(e,i,o){ -function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function g(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function v(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=g,S.onerror=r,S.onclose=v}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:v},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,g=e.hprose.Future,v=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new v("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new v("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this); \ No newline at end of file +!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull); +switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=$e.length;r=0;r--)e=$e[r].inputFilter(e,t);return e}function T(e,t){return e=p(e,t),ot(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return ft.sendAndReceive(e,t)}function O(e,t,r,n){it(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Pe.length;if(e>1){var t=Ue+1;t>=e&&(t=0,qe++),Ue=t,xe=Pe[Ue]}else qe++;Je(ft)}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){O(t,r,n,i)},o):O(t,r,n,i),!0}return!1}function B(e){var t={retry:Le,retried:0,idempotent:!0,failswitch:!0,timeout:We,client:ft,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Xe.reject(r):Xe.resolve(e)};O(v,t,r,Xe.reject)}function A(e,t){return function(){return Ke?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return He?h.promise(function(i,o){Qe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Ye(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(He=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Qe),Qe=[])}}function W(e,t,r){r.sync&&(He=!0);var n=h.promise(function(n,i){rt(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ve.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:We,retry:Le,retried:0,idempotent:De,failswitch:ze,oneway:!1,sync:!1,client:ft,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Ke=!0}function H(e){if(e=e||{},Ke=!1,He)return h.promise(function(t,r){Qe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ve.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(He=!0);var n=Ve;Ve=[];var i=h.promise(function(e,t){nt(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return Ye}function G(e){typeof e===w&&(Ye=e)}function Y(){return Je}function J(e){typeof e===w&&(Je=e)}function $(){return xe}function K(){return Pe}function V(e){if(typeof e===d)Pe=[e];else{if(!Array.isArray(e))return;Pe=e.slice(0),Pe.sort(function(){return Math.random()-.5})}Ue=0,xe=Pe[Ue]}function X(){return ze}function Z(e){ze=!!e}function ee(){return qe}function te(){return We}function re(e){We="number"==typeof e?0|e:0}function ne(){return Le}function ie(e){Le="number"==typeof e?0|e:0}function oe(){return De}function ae(e){De=!!e}function se(e){tt=!!e}function ue(){return tt}function ce(){return Ne}function fe(e){Ne=!!e}function le(){return Fe}function he(e){Fe=!!e}function pe(){return Ge}function ve(e){Ge=!!e}function ge(){return 0===$e.length?null:1===$e.length?$e[0]:$e.slice()}function de(e){$e.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&$e.push(e)}function we(e){var t=$e.indexOf(e);return t!==-1&&($e.splice(t,1),!0)}function me(){return $e}function be(e,r,n){n===t&&(typeof r===g&&(n=r,r=!1),r||(typeof e===g?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ft;return n&&(i={}),e||xe?(e&&(xe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Xe.resolve(i),i):(a(B,i),Xe)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==w&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==w&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Ze[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===et){if(Ze[e]){var i=Ze[e];for(r in i)je(i,r,n)}}else et.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(Ze[e],r,n)}function Ae(){return et}function Ee(){return P(ft,"#",[],!1)}function ke(e){at.push(e),rt=at.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Ce(e){st.push(e),nt=st.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return ke(e),ft}var xe,Pe=[],Ue=-1,Ne=!1,Fe=!1,We=3e4,Le=10,De=!1,ze=!1,qe=0,He=!1,Qe=[],Ge=!1,Ye=r,Je=r,$e=[],Ke=!1,Ve=[],Xe=new h,Ze=Object.create(null),et=null,tt=!0,rt=N,nt=z,it=T,ot=_,at=[],st=[],ut=[],ct=[],ft=this;Ee.sync=!0,Ee.idempotent=!0,Ee.failswitch=!0;var lt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Ce(e),lt}}}),ht=Object.create(null,{use:{value:function(e){return Ie(e),ht}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}});Object.defineProperties(this,{"#":{value:Ee},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:Ae},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},use:{value:Me},batch:{value:lt},beforeFilter:{value:ht},afterFilter:{value:pt}}),o&&typeof o===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(ft[e]=o[e])}),n&&(V(n),be(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=new Uint8Array(1);v[0]=s.TagEnd;var g="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function v(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function g(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:g},onRequestProgress:{get:d,set:g},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:v}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri; +Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index ea14f31..04ce80f 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index e69e36a..c870335 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.17 +// Hprose for HTML5 v2.0.18 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -19,7 +19,7 @@ * * * hprose init for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -29,7 +29,7 @@ global.hprose = Object.create(null); -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -46,7 +46,7 @@ * * * hprose helper for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -133,7 +133,7 @@ global.hprose.toArray = toArray; global.hprose.parseuri = parseuri; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -150,7 +150,7 @@ * * * Polyfill for JavaScript. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -550,7 +550,7 @@ 'slice' ]); -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -567,7 +567,7 @@ * * * Harmony Maps for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -851,7 +851,7 @@ return m; }; } -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -868,7 +868,7 @@ * * * TimeoutError for HTML5. * * * - * LastModified: Mar 29, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -887,7 +887,7 @@ TimeoutError.prototype.constructor = TimeoutError; global.TimeoutError = TimeoutError; } -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | | hprose | @@ -903,7 +903,7 @@ * * * setImmediate for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1069,7 +1069,7 @@ } attachTo.clearImmediate = clear; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -1086,7 +1086,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Aug 12, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1768,7 +1768,7 @@ reject: { value: error } }); -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -1785,7 +1785,7 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -2392,7 +2392,7 @@ global.hprose.BytesIO = BytesIO; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -2408,7 +2408,7 @@ * * * hprose tags enum for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -2455,7 +2455,7 @@ TagError : 0x45, // 'E' TagEnd : 0x7A // 'z' }; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -2472,7 +2472,7 @@ * * * hprose ClassManager for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -2508,7 +2508,7 @@ register(Object, 'Object'); -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -2525,7 +2525,7 @@ * * * hprose Writer for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -3066,7 +3066,7 @@ global.hprose.Writer = Writer; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -3083,7 +3083,7 @@ * * * hprose Reader for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -3809,7 +3809,7 @@ }); global.hprose.Reader = Reader; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -3826,7 +3826,7 @@ * * * hprose Formatter for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -3863,7 +3863,7 @@ global.hprose.unserialize = unserialize; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -3880,7 +3880,7 @@ * * * hprose ResultMode for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -3899,7 +3899,7 @@ global.hprose.Raw = global.hprose.ResultMode.Raw; global.hprose.RawWithEndTag = global.hprose.ResultMode.RawWithEndTag; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -3915,7 +3915,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5095,7 +5095,7 @@ global.hprose.Client = Client; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -5111,7 +5111,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Jul 26, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5286,7 +5286,7 @@ global.hprose.HttpClient = HttpClient; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -5302,7 +5302,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5469,7 +5469,7 @@ global.hprose.WebSocketClient = WebSocketClient; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -5485,7 +5485,7 @@ * * * chrome tcp socket for JavaScript. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5651,7 +5651,7 @@ global.hprose.ChromeTcpSocket = ChromeTcpSocket; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -5667,7 +5667,7 @@ * * * APICloud tcp socket for HTML5. * * * - * LastModified: Mar 8, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5784,7 +5784,7 @@ global.hprose.APICloudTcpSocket = APICloudTcpSocket; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -5800,7 +5800,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -6255,7 +6255,7 @@ global.hprose.TcpClient = TcpClient; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -6272,7 +6272,7 @@ * * * jsonrpc client filter for JavaScript. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -6350,7 +6350,7 @@ global.hprose.JSONRPCClientFilter = JSONRPCClientFilter; -})(this); +})(this || [eval][0]('this')); /**********************************************************\ | | @@ -6367,7 +6367,7 @@ * * * hprose CommonJS/AMD/CMD loader for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -6414,4 +6414,4 @@ if (typeof module === 'object') { module.exports = global.hprose; } -})(this); +})(this || [eval][0]('this')); diff --git a/package.json b/package.json index 1a36124..485aa78 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.17", + "version": "2.0.18", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/APICloudTcpSocket.js b/src/APICloudTcpSocket.js index 307dfca..d791900 100644 --- a/src/APICloudTcpSocket.js +++ b/src/APICloudTcpSocket.js @@ -12,7 +12,7 @@ * * * APICloud tcp socket for HTML5. * * * - * LastModified: Mar 8, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -129,4 +129,4 @@ global.hprose.APICloudTcpSocket = APICloudTcpSocket; -})(this); +})(this || [eval][0]('this')); diff --git a/src/Base64.js b/src/Base64.js index e083772..d5ed0dc 100644 --- a/src/Base64.js +++ b/src/Base64.js @@ -12,7 +12,7 @@ * * * Base64 for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -131,4 +131,4 @@ })(); } -})(this); +})(this || [eval][0]('this')); diff --git a/src/BytesIO.js b/src/BytesIO.js index b61bd1b..c479772 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -13,7 +13,7 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -620,4 +620,4 @@ global.hprose.BytesIO = BytesIO; -})(this); +})(this || [eval][0]('this')); diff --git a/src/ChromeTcpSocket.js b/src/ChromeTcpSocket.js index e7a0448..e8dbd69 100644 --- a/src/ChromeTcpSocket.js +++ b/src/ChromeTcpSocket.js @@ -12,7 +12,7 @@ * * * chrome tcp socket for JavaScript. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -178,4 +178,4 @@ global.hprose.ChromeTcpSocket = ChromeTcpSocket; -})(this); +})(this || [eval][0]('this')); diff --git a/src/ClassManager.js b/src/ClassManager.js index 571bdd3..61e4b2f 100644 --- a/src/ClassManager.js +++ b/src/ClassManager.js @@ -13,7 +13,7 @@ * * * hprose ClassManager for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -49,4 +49,4 @@ register(Object, 'Object'); -})(this); +})(this || [eval][0]('this')); diff --git a/src/Client.js b/src/Client.js index 8542434..11c2a67 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1192,4 +1192,4 @@ global.hprose.Client = Client; -})(this); +})(this || [eval][0]('this')); diff --git a/src/CopyRight.js b/src/CopyRight.js index 6521fa3..9e8d60b 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.17 +// Hprose for HTML5 v2.0.18 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Formatter.js b/src/Formatter.js index 62e167a..00116f2 100644 --- a/src/Formatter.js +++ b/src/Formatter.js @@ -13,7 +13,7 @@ * * * hprose Formatter for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -50,4 +50,4 @@ global.hprose.unserialize = unserialize; -})(this); +})(this || [eval][0]('this')); diff --git a/src/Future.js b/src/Future.js index 48dc034..15d690d 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Aug 12, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -695,4 +695,4 @@ reject: { value: error } }); -})(this); +})(this || [eval][0]('this')); diff --git a/src/HarmonyMaps.js b/src/HarmonyMaps.js index db1291d..f1c477e 100644 --- a/src/HarmonyMaps.js +++ b/src/HarmonyMaps.js @@ -13,7 +13,7 @@ * * * Harmony Maps for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -297,4 +297,4 @@ return m; }; } -})(this); +})(this || [eval][0]('this')); diff --git a/src/Helper.js b/src/Helper.js index 685cb3c..fb4d088 100644 --- a/src/Helper.js +++ b/src/Helper.js @@ -13,7 +13,7 @@ * * * hprose helper for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -100,4 +100,4 @@ global.hprose.toArray = toArray; global.hprose.parseuri = parseuri; -})(this); +})(this || [eval][0]('this')); diff --git a/src/HttpClient.js b/src/HttpClient.js index d1982f4..0c04f27 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,7 +12,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Jul 26, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -187,4 +187,4 @@ global.hprose.HttpClient = HttpClient; -})(this); +})(this || [eval][0]('this')); diff --git a/src/Init.js b/src/Init.js index 7df59a6..0c759bc 100644 --- a/src/Init.js +++ b/src/Init.js @@ -13,7 +13,7 @@ * * * hprose init for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -23,4 +23,4 @@ global.hprose = Object.create(null); -})(this); +})(this || [eval][0]('this')); diff --git a/src/JSONRPCClientFilter.js b/src/JSONRPCClientFilter.js index b2431fb..83f4dbb 100644 --- a/src/JSONRPCClientFilter.js +++ b/src/JSONRPCClientFilter.js @@ -13,7 +13,7 @@ * * * jsonrpc client filter for JavaScript. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -91,4 +91,4 @@ global.hprose.JSONRPCClientFilter = JSONRPCClientFilter; -})(this); +})(this || [eval][0]('this')); diff --git a/src/Loader.js b/src/Loader.js index 5f714bc..1514af0 100644 --- a/src/Loader.js +++ b/src/Loader.js @@ -13,7 +13,7 @@ * * * hprose CommonJS/AMD/CMD loader for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -60,4 +60,4 @@ if (typeof module === 'object') { module.exports = global.hprose; } -})(this); +})(this || [eval][0]('this')); diff --git a/src/Polyfill.js b/src/Polyfill.js index f0143a9..7f6556f 100644 --- a/src/Polyfill.js +++ b/src/Polyfill.js @@ -13,7 +13,7 @@ * * * Polyfill for JavaScript. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -413,4 +413,4 @@ 'slice' ]); -})(this); +})(this || [eval][0]('this')); diff --git a/src/Reader.js b/src/Reader.js index f4280d9..a5c6e96 100644 --- a/src/Reader.js +++ b/src/Reader.js @@ -13,7 +13,7 @@ * * * hprose Reader for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -739,4 +739,4 @@ }); global.hprose.Reader = Reader; -})(this); +})(this || [eval][0]('this')); diff --git a/src/ResultMode.js b/src/ResultMode.js index 8352ac3..1721ce9 100644 --- a/src/ResultMode.js +++ b/src/ResultMode.js @@ -13,7 +13,7 @@ * * * hprose ResultMode for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -32,4 +32,4 @@ global.hprose.Raw = global.hprose.ResultMode.Raw; global.hprose.RawWithEndTag = global.hprose.ResultMode.RawWithEndTag; -})(this); +})(this || [eval][0]('this')); diff --git a/src/Tags.js b/src/Tags.js index 7f11088..49e4a64 100644 --- a/src/Tags.js +++ b/src/Tags.js @@ -12,7 +12,7 @@ * * * hprose tags enum for HTML5. * * * - * LastModified: Feb 23, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -59,4 +59,4 @@ TagError : 0x45, // 'E' TagEnd : 0x7A // 'z' }; -})(this); +})(this || [eval][0]('this')); diff --git a/src/TcpClient.js b/src/TcpClient.js index 983d2c7..1ba98ab 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,7 +12,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -467,4 +467,4 @@ global.hprose.TcpClient = TcpClient; -})(this); +})(this || [eval][0]('this')); diff --git a/src/TimeoutError.js b/src/TimeoutError.js index 301c5b3..b9cf3d0 100644 --- a/src/TimeoutError.js +++ b/src/TimeoutError.js @@ -13,7 +13,7 @@ * * * TimeoutError for HTML5. * * * - * LastModified: Mar 29, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -32,4 +32,4 @@ TimeoutError.prototype.constructor = TimeoutError; global.TimeoutError = TimeoutError; } -})(this); \ No newline at end of file +})(this || [eval][0]('this')); \ No newline at end of file diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index 58761eb..bd43fad 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -179,4 +179,4 @@ global.hprose.WebSocketClient = WebSocketClient; -})(this); +})(this || [eval][0]('this')); diff --git a/src/Writer.js b/src/Writer.js index 21f24e6..8320d76 100644 --- a/src/Writer.js +++ b/src/Writer.js @@ -13,7 +13,7 @@ * * * hprose Writer for HTML5. * * * - * LastModified: Mar 2, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -554,4 +554,4 @@ global.hprose.Writer = Writer; -})(this); +})(this || [eval][0]('this')); diff --git a/src/setImmediate.js b/src/setImmediate.js index 1e872e4..8bc1795 100644 --- a/src/setImmediate.js +++ b/src/setImmediate.js @@ -13,7 +13,7 @@ * * * setImmediate for HTML5. * * * - * LastModified: Sep 28, 2016 * + * LastModified: Sep 29, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -179,4 +179,4 @@ } attachTo.clearImmediate = clear; -})(this); +})(this || [eval][0]('this')); diff --git a/test/Future.Test.js b/test/Future.Test.js index 44d95d0..7ec5212 100644 --- a/test/Future.Test.js +++ b/test/Future.Test.js @@ -234,4 +234,4 @@ testPromise(); testPromise(); testPromise(); -})(this); +})(this || [eval][0]('this')); From 953bbc5259650b6a8f7b0e21c9f308d5f8470157 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 12 Oct 2016 18:09:35 +0800 Subject: [PATCH 47/86] Added isSubscribed & subscribedList --- bower.json | 2 +- dist/hprose-html5.js | 8 ++++---- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 42 ++++++++++++++++++++++++++++++++++------ package.json | 2 +- src/Client.js | 28 ++++++++++++++++++++++----- src/CopyRight.js | 2 +- src/Helper.js | 12 ++++++++++++ 8 files changed, 79 insertions(+), 19 deletions(-) diff --git a/bower.json b/bower.json index 68879c2..696bcaa 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.18", + "version": "2.0.19", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 8b60cee..84a004b 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.18 +// Hprose for HTML5 v2.0.19 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull); -switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=$e.length;r=0;r--)e=$e[r].inputFilter(e,t);return e}function T(e,t){return e=p(e,t),ot(e,t).then(function(e){if(!t.oneway)return b(e,t)})}function _(e,t){return ft.sendAndReceive(e,t)}function O(e,t,r,n){it(e,t).then(r,function(i){j(e,t,r,n)||n(i)})}function S(){var e=Pe.length;if(e>1){var t=Ue+1;t>=e&&(t=0,qe++),Ue=t,xe=Pe[Ue]}else qe++;Je(ft)}function j(t,r,n,i){if(r.failswitch&&S(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){O(t,r,n,i)},o):O(t,r,n,i),!0}return!1}function B(e){var t={retry:Le,retried:0,idempotent:!0,failswitch:!0,timeout:We,client:ft,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?Xe.reject(r):Xe.resolve(e)};O(v,t,r,Xe.reject)}function A(e,t){return function(){return Ke?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return He?h.promise(function(i,o){Qe.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return x(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Ye(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(He=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Qe),Qe=[])}}function W(e,t,r){r.sync&&(He=!0);var n=h.promise(function(n,i){rt(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ve.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:We,retry:Le,retried:0,idempotent:De,failswitch:ze,oneway:!1,sync:!1,client:ft,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Ke=!0}function H(e){if(e=e||{},Ke=!1,He)return h.promise(function(t,r){Qe.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ve.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(He=!0);var n=Ve;Ve=[];var i=h.promise(function(e,t){nt(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return Ye}function G(e){typeof e===w&&(Ye=e)}function Y(){return Je}function J(e){typeof e===w&&(Je=e)}function $(){return xe}function K(){return Pe}function V(e){if(typeof e===d)Pe=[e];else{if(!Array.isArray(e))return;Pe=e.slice(0),Pe.sort(function(){return Math.random()-.5})}Ue=0,xe=Pe[Ue]}function X(){return ze}function Z(e){ze=!!e}function ee(){return qe}function te(){return We}function re(e){We="number"==typeof e?0|e:0}function ne(){return Le}function ie(e){Le="number"==typeof e?0|e:0}function oe(){return De}function ae(e){De=!!e}function se(e){tt=!!e}function ue(){return tt}function ce(){return Ne}function fe(e){Ne=!!e}function le(){return Fe}function he(e){Fe=!!e}function pe(){return Ge}function ve(e){Ge=!!e}function ge(){return 0===$e.length?null:1===$e.length?$e[0]:$e.slice()}function de(e){$e.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&$e.push(e)}function we(e){var t=$e.indexOf(e);return t!==-1&&($e.splice(t,1),!0)}function me(){return $e}function be(e,r,n){n===t&&(typeof r===g&&(n=r,r=!1),r||(typeof e===g?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ft;return n&&(i={}),e||xe?(e&&(xe=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),Xe.resolve(i),i):(a(B,i),Xe)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==w&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==w&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==w)return void delete Ze[e];r=n}if(typeof r===w&&(n=r,r=null),null===r)if(null===et){if(Ze[e]){var i=Ze[e];for(r in i)je(i,r,n)}}else et.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(Ze[e],r,n)}function Ae(){return et}function Ee(){return P(ft,"#",[],!1)}function ke(e){at.push(e),rt=at.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Ce(e){st.push(e),nt=st.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return ke(e),ft}var xe,Pe=[],Ue=-1,Ne=!1,Fe=!1,We=3e4,Le=10,De=!1,ze=!1,qe=0,He=!1,Qe=[],Ge=!1,Ye=r,Je=r,$e=[],Ke=!1,Ve=[],Xe=new h,Ze=Object.create(null),et=null,tt=!0,rt=N,nt=z,it=T,ot=_,at=[],st=[],ut=[],ct=[],ft=this;Ee.sync=!0,Ee.idempotent=!0,Ee.failswitch=!0;var lt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Ce(e),lt}}}),ht=Object.create(null,{use:{value:function(e){return Ie(e),ht}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}});Object.defineProperties(this,{"#":{value:Ee},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:Ae},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},use:{value:Me},batch:{value:lt},beforeFilter:{value:ht},afterFilter:{value:pt}}),o&&typeof o===m&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(ft[e]=o[e])}),n&&(V(n),be(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=new Uint8Array(1);v[0]=s.TagEnd;var g="boolean",d="string",y="number",w="function",m="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function v(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function g(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:g},onRequestProgress:{get:d,set:g},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:v}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri; -Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file +!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function P(e,t,r){e?R(e,t,r):t.resolve(r)}function M(e,t,r){e?R(e,t,r):t.reject(r)}function x(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();P(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?P(e,n,this._value):this._state===F?M(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=x,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{ +value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return P(e);case ee.TagUTF8Char:return x(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return P(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return x(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=Xe.length;r=0;r--)e=Xe[r].inputFilter(e,t);return e}function _(e,t){return e=p(e,t),ut(e,t).then(function(e){if(!t.oneway)return T(e,t)})}function O(e,t){return pt.sendAndReceive(e,t)}function S(e,t,r,n){st(e,t).then(r,function(i){B(e,t,r,n)||n(i)})}function j(){var e=Fe.length;if(e>1){var t=We+1;t>=e&&(t=0,Ge++),We=t,Ne=Fe[We]}else Ge++;Ve(pt)}function B(t,r,n,i){if(r.failswitch&&j(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){S(t,r,n,i)},o):S(t,r,n,i),!0}return!1}function A(e){var t={retry:qe,retried:0,idempotent:!0,failswitch:!0,timeout:ze,client:pt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),C(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?tt.reject(r):tt.resolve(e)};S(g,t,r,tt.reject)}function E(e,t){return function(){return Ze?U(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return U(e,t,r,!1)})}}function k(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Ye?h.promise(function(i,o){Je.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?D(e,t,r):L(e,t,r)}function U(e,t,r,n){return x(t,r,P(e,t,r,n),n)}function N(e,t,r,n){try{r.onerror?r.onerror(e,t):Ke(e,t),n(t)}catch(e){n(e)}}function F(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){S(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();I(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function W(e){return function(){e&&(Ye=!1,a(function(e){e.forEach(function(e){"settings"in e?Q(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Je),Je=[])}}function L(e,t,r){r.sync&&(Ye=!0);var n=h.promise(function(n,i){ot(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){N(e,t,r,i)})});return n.whenComplete(W(r.sync)),n}function D(e,t,r){return h.promise(function(n,i){et.push({args:t,name:e,context:r,resolve:n,reject:i})})}function z(e){var t={timeout:ze,retry:qe,retried:0,idempotent:He,failswitch:Qe,oneway:!1,sync:!1,client:pt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function q(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){S(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();I(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function H(){Ze=!0}function Q(e){if(e=e||{},Ze=!1,Ye)return h.promise(function(t,r){Je.push({batch:!0,settings:e,resolve:t,reject:r})});var t=et.length;if(0===t)return h.value([]);var r=z(e);r.sync&&(Ye=!0);var n=et;et=[];var i=h.promise(function(e,t){at(n,r).then(function(t){t.forEach(function(e){if(e.error)N(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&N(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(W(r.sync)),i}function G(){return Ke}function Y(e){typeof e===m&&(Ke=e)}function J(){return Ve}function $(e){typeof e===m&&(Ve=e)}function K(){return Ne}function V(){return Fe}function X(e){if(typeof e===y)Fe=[e];else{if(!Array.isArray(e))return;Fe=e.slice(0),Fe.sort(function(){return Math.random()-.5})}We=0,Ne=Fe[We]}function Z(){return Qe}function ee(e){Qe=!!e}function te(){return Ge}function re(){return ze}function ne(e){ze="number"==typeof e?0|e:0}function ie(){return qe}function oe(e){qe="number"==typeof e?0|e:0}function ae(){return He}function se(e){He=!!e}function ue(e){it=!!e}function ce(){return it}function fe(){return Le}function le(e){Le=!!e}function he(){return De}function pe(e){De=!!e}function ve(){return $e}function ge(e){$e=!!e}function de(){return 0===Xe.length?null:1===Xe.length?Xe[0]:Xe.slice()}function ye(e){Xe.length=0,Array.isArray(e)?e.forEach(function(e){we(e)}):we(e)}function we(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Xe.push(e)}function me(e){var t=Xe.indexOf(e);return t!==-1&&(Xe.splice(t,1),!0)}function be(){return Xe}function Te(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=pt;return n&&(i={}),e||Ne?(e&&(Ne=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(C(i,r),tt.resolve(i),i):(a(A,i),tt)):new Error("You should set server uri first!")}function _e(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ae(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete rt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===nt){if(rt[e]){var i=rt[e];for(r in i)Be(i,r,n)}}else nt.then(function(t){Ae(e,t,n)});else h.isPromise(r)?r.then(function(t){Ae(e,t,n)}):Be(rt[e],r,n);v(rt[e])&&delete rt[e]}function Ee(e){return rt.hasOwnProperty(e)}function ke(){var e=[];for(var t in rt)rt.hasOwnProperty(t)&&e.push(t);return e}function Ce(){return nt}function Ie(){return null===nt&&(nt=U(pt,"#",[],!1)),nt}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},F)}function Pe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},q)}function Me(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function xe(e){ht.push(e),ut=ht.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},O)}function Ue(e){return Re(e),pt}var Ne,Fe=[],We=-1,Le=!1,De=!1,ze=3e4,qe=10,He=!1,Qe=!1,Ge=0,Ye=!1,Je=[],$e=!1,Ke=r,Ve=r,Xe=[],Ze=!1,et=[],tt=new h,rt=Object.create(null),nt=null,it=!0,ot=F,at=q,st=_,ut=O,ct=[],ft=[],lt=[],ht=[],pt=this;Ie.sync=!0,Ie.idempotent=!0,Ie.failswitch=!0;var vt=Object.create(null,{begin:{value:H},end:{value:Q},use:{value:function(e){return Pe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Me(e),gt}}}),dt=Object.create(null,{use:{value:function(e){return xe(e),dt}}});Object.defineProperties(this,{"#":{value:Ie},onerror:{get:G,set:Y},onfailswitch:{get:J,set:$},uri:{get:K},uriList:{get:V,set:X},id:{get:Ce},failswitch:{get:Z,set:ee},failround:{get:te},timeout:{get:re,set:ne},retry:{get:ie,set:oe},idempotent:{get:ae,set:se},keepAlive:{get:ce,set:ue},byref:{get:fe,set:le},simple:{get:he,set:pe},useHarmonyMap:{get:ve,set:ge},filter:{get:de,set:ye},addFilter:{value:we},removeFilter:{value:me},filters:{get:be},useService:{value:Te},invoke:{value:_e},ready:{value:Oe},subscribe:{value:je},unsubscribe:{value:Ae},isSubscribed:{value:Ee},subscribedList:{value:ke},use:{value:Ue},batch:{value:vt},beforeFilter:{value:gt},afterFilter:{value:dt}}),o&&typeof o===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(pt[e]=o[e])}),n&&(X(n),Te(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function v(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function g(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:g},onRequestProgress:{get:d,set:g},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:v}})}function i(e){ +var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 04ce80f..69e2156 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index c870335..e5a76f4 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.18 +// Hprose for HTML5 v2.0.19 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -127,11 +127,23 @@ }; } + var isObjectEmpty = function (obj) { + if (obj) { + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + return false; + } + } + } + return true; + } + global.hprose.generic = generic; global.hprose.toBinaryString = toBinaryString; global.hprose.toUint8Array = toUint8Array; global.hprose.toArray = toArray; global.hprose.parseuri = parseuri; + global.hprose.isObjectEmpty = isObjectEmpty; })(this || [eval][0]('this')); @@ -3931,6 +3943,7 @@ var Reader = global.hprose.Reader; var Future = global.hprose.Future; var parseuri = global.hprose.parseuri; + var isObjectEmpty = global.hprose.isObjectEmpty; var GETFUNCTIONS = new Uint8Array(1); GETFUNCTIONS[0] = Tags.TagEnd; @@ -4807,10 +4820,7 @@ if (typeof id === s_function) { timeout = callback; callback = id; - if (_id === null) { - _id = autoId(); - } - _id.then(function(id) { + autoId().then(function(id) { subscribe(name, id, callback, timeout, failswitch); }); return; @@ -4924,12 +4934,30 @@ else { delTopic(_topics[name], id, callback); } + if (isObjectEmpty(_topics[name])) { + delete _topics[name]; + } + } + function isSubscribed(name) { + return _topics.hasOwnProperty(name); + } + function subscribedList() { + var list = []; + for (var name in _topics) { + if (_topics.hasOwnProperty(name)) { + list.push(name); + } + } + return list; } function getId() { return _id; } function autoId() { - return _invoke(self, '#', [], false); + if (_id === null) { + _id = _invoke(self, '#', [], false); + } + return _id; } autoId.sync = true; autoId.idempotent = true; @@ -5027,6 +5055,8 @@ ready: { value: ready }, subscribe: { value: subscribe }, unsubscribe: { value: unsubscribe }, + isSubscribed: { value : isSubscribed }, + subscribedList: { value : subscribedList }, use: { value: use }, batch: { value: batch }, beforeFilter: { value: beforeFilter }, diff --git a/package.json b/package.json index 485aa78..71bcb3a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.18", + "version": "2.0.19", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/Client.js b/src/Client.js index 11c2a67..aceb5a4 100644 --- a/src/Client.js +++ b/src/Client.js @@ -28,6 +28,7 @@ var Reader = global.hprose.Reader; var Future = global.hprose.Future; var parseuri = global.hprose.parseuri; + var isObjectEmpty = global.hprose.isObjectEmpty; var GETFUNCTIONS = new Uint8Array(1); GETFUNCTIONS[0] = Tags.TagEnd; @@ -904,10 +905,7 @@ if (typeof id === s_function) { timeout = callback; callback = id; - if (_id === null) { - _id = autoId(); - } - _id.then(function(id) { + autoId().then(function(id) { subscribe(name, id, callback, timeout, failswitch); }); return; @@ -1021,12 +1019,30 @@ else { delTopic(_topics[name], id, callback); } + if (isObjectEmpty(_topics[name])) { + delete _topics[name]; + } + } + function isSubscribed(name) { + return _topics.hasOwnProperty(name); + } + function subscribedList() { + var list = []; + for (var name in _topics) { + if (_topics.hasOwnProperty(name)) { + list.push(name); + } + } + return list; } function getId() { return _id; } function autoId() { - return _invoke(self, '#', [], false); + if (_id === null) { + _id = _invoke(self, '#', [], false); + } + return _id; } autoId.sync = true; autoId.idempotent = true; @@ -1124,6 +1140,8 @@ ready: { value: ready }, subscribe: { value: subscribe }, unsubscribe: { value: unsubscribe }, + isSubscribed: { value : isSubscribed }, + subscribedList: { value : subscribedList }, use: { value: use }, batch: { value: batch }, beforeFilter: { value: beforeFilter }, diff --git a/src/CopyRight.js b/src/CopyRight.js index 9e8d60b..4560bd5 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.18 +// Hprose for HTML5 v2.0.19 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Helper.js b/src/Helper.js index fb4d088..41dd2c7 100644 --- a/src/Helper.js +++ b/src/Helper.js @@ -94,10 +94,22 @@ }; } + var isObjectEmpty = function (obj) { + if (obj) { + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + return false; + } + } + } + return true; + } + global.hprose.generic = generic; global.hprose.toBinaryString = toBinaryString; global.hprose.toUint8Array = toUint8Array; global.hprose.toArray = toArray; global.hprose.parseuri = parseuri; + global.hprose.isObjectEmpty = isObjectEmpty; })(this || [eval][0]('this')); From 4b1532b8e704cc7e990f2dea04dd2a0b5e5eda28 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 12 Oct 2016 18:45:30 +0800 Subject: [PATCH 48/86] Fixed hasOwnProperty is not a function bug --- dist/hprose-html5.js | 6 +++--- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 13 +++++-------- src/Client.js | 6 ++---- src/Helper.js | 7 +++---- 5 files changed, 14 insertions(+), 20 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 84a004b..877009a 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function P(e,t,r){e?R(e,t,r):t.resolve(r)}function M(e,t,r){e?R(e,t,r):t.reject(r)}function x(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();P(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?P(e,n,this._value):this._state===F?M(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=x,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{ -value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return P(e);case ee.TagUTF8Char:return x(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return P(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return x(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=Xe.length;r=0;r--)e=Xe[r].inputFilter(e,t);return e}function _(e,t){return e=p(e,t),ut(e,t).then(function(e){if(!t.oneway)return T(e,t)})}function O(e,t){return pt.sendAndReceive(e,t)}function S(e,t,r,n){st(e,t).then(r,function(i){B(e,t,r,n)||n(i)})}function j(){var e=Fe.length;if(e>1){var t=We+1;t>=e&&(t=0,Ge++),We=t,Ne=Fe[We]}else Ge++;Ve(pt)}function B(t,r,n,i){if(r.failswitch&&j(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){S(t,r,n,i)},o):S(t,r,n,i),!0}return!1}function A(e){var t={retry:qe,retried:0,idempotent:!0,failswitch:!0,timeout:ze,client:pt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),C(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?tt.reject(r):tt.resolve(e)};S(g,t,r,tt.reject)}function E(e,t){return function(){return Ze?U(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return U(e,t,r,!1)})}}function k(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function x(e,t,r,n){return Ye?h.promise(function(i,o){Je.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?D(e,t,r):L(e,t,r)}function U(e,t,r,n){return x(t,r,P(e,t,r,n),n)}function N(e,t,r,n){try{r.onerror?r.onerror(e,t):Ke(e,t),n(t)}catch(e){n(e)}}function F(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){S(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();I(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function W(e){return function(){e&&(Ye=!1,a(function(e){e.forEach(function(e){"settings"in e?Q(e.settings).then(e.resolve,e.reject):x(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Je),Je=[])}}function L(e,t,r){r.sync&&(Ye=!0);var n=h.promise(function(n,i){ot(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){N(e,t,r,i)})});return n.whenComplete(W(r.sync)),n}function D(e,t,r){return h.promise(function(n,i){et.push({args:t,name:e,context:r,resolve:n,reject:i})})}function z(e){var t={timeout:ze,retry:qe,retried:0,idempotent:He,failswitch:Qe,oneway:!1,sync:!1,client:pt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function q(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){S(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();I(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function H(){Ze=!0}function Q(e){if(e=e||{},Ze=!1,Ye)return h.promise(function(t,r){Je.push({batch:!0,settings:e,resolve:t,reject:r})});var t=et.length;if(0===t)return h.value([]);var r=z(e);r.sync&&(Ye=!0);var n=et;et=[];var i=h.promise(function(e,t){at(n,r).then(function(t){t.forEach(function(e){if(e.error)N(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&N(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(W(r.sync)),i}function G(){return Ke}function Y(e){typeof e===m&&(Ke=e)}function J(){return Ve}function $(e){typeof e===m&&(Ve=e)}function K(){return Ne}function V(){return Fe}function X(e){if(typeof e===y)Fe=[e];else{if(!Array.isArray(e))return;Fe=e.slice(0),Fe.sort(function(){return Math.random()-.5})}We=0,Ne=Fe[We]}function Z(){return Qe}function ee(e){Qe=!!e}function te(){return Ge}function re(){return ze}function ne(e){ze="number"==typeof e?0|e:0}function ie(){return qe}function oe(e){qe="number"==typeof e?0|e:0}function ae(){return He}function se(e){He=!!e}function ue(e){it=!!e}function ce(){return it}function fe(){return Le}function le(e){Le=!!e}function he(){return De}function pe(e){De=!!e}function ve(){return $e}function ge(e){$e=!!e}function de(){return 0===Xe.length?null:1===Xe.length?Xe[0]:Xe.slice()}function ye(e){Xe.length=0,Array.isArray(e)?e.forEach(function(e){we(e)}):we(e)}function we(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Xe.push(e)}function me(e){var t=Xe.indexOf(e);return t!==-1&&(Xe.splice(t,1),!0)}function be(){return Xe}function Te(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=pt;return n&&(i={}),e||Ne?(e&&(Ne=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(C(i,r),tt.resolve(i),i):(a(A,i),tt)):new Error("You should set server uri first!")}function _e(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ae(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete rt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===nt){if(rt[e]){var i=rt[e];for(r in i)Be(i,r,n)}}else nt.then(function(t){Ae(e,t,n)});else h.isPromise(r)?r.then(function(t){Ae(e,t,n)}):Be(rt[e],r,n);v(rt[e])&&delete rt[e]}function Ee(e){return rt.hasOwnProperty(e)}function ke(){var e=[];for(var t in rt)rt.hasOwnProperty(t)&&e.push(t);return e}function Ce(){return nt}function Ie(){return null===nt&&(nt=U(pt,"#",[],!1)),nt}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},F)}function Pe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},q)}function Me(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function xe(e){ht.push(e),ut=ht.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},O)}function Ue(e){return Re(e),pt}var Ne,Fe=[],We=-1,Le=!1,De=!1,ze=3e4,qe=10,He=!1,Qe=!1,Ge=0,Ye=!1,Je=[],$e=!1,Ke=r,Ve=r,Xe=[],Ze=!1,et=[],tt=new h,rt=Object.create(null),nt=null,it=!0,ot=F,at=q,st=_,ut=O,ct=[],ft=[],lt=[],ht=[],pt=this;Ie.sync=!0,Ie.idempotent=!0,Ie.failswitch=!0;var vt=Object.create(null,{begin:{value:H},end:{value:Q},use:{value:function(e){return Pe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Me(e),gt}}}),dt=Object.create(null,{use:{value:function(e){return xe(e),dt}}});Object.defineProperties(this,{"#":{value:Ie},onerror:{get:G,set:Y},onfailswitch:{get:J,set:$},uri:{get:K},uriList:{get:V,set:X},id:{get:Ce},failswitch:{get:Z,set:ee},failround:{get:te},timeout:{get:re,set:ne},retry:{get:ie,set:oe},idempotent:{get:ae,set:se},keepAlive:{get:ce,set:ue},byref:{get:fe,set:le},simple:{get:he,set:pe},useHarmonyMap:{get:ve,set:ge},filter:{get:de,set:ye},addFilter:{value:we},removeFilter:{value:me},filters:{get:be},useService:{value:Te},invoke:{value:_e},ready:{value:Oe},subscribe:{value:je},unsubscribe:{value:Ae},isSubscribed:{value:Ee},subscribedList:{value:ke},use:{value:Ue},batch:{value:vt},beforeFilter:{value:gt},afterFilter:{value:dt}}),o&&typeof o===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(pt[e]=o[e])}),n&&(X(n),Te(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function v(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function g(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:g},onRequestProgress:{get:d,set:g},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:v}})}function i(e){ -var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file +!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0 +},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=Xe.length;r=0;r--)e=Xe[r].inputFilter(e,t);return e}function _(e,t){return e=p(e,t),ut(e,t).then(function(e){if(!t.oneway)return T(e,t)})}function O(e,t){return pt.sendAndReceive(e,t)}function S(e,t,r,n){st(e,t).then(r,function(i){B(e,t,r,n)||n(i)})}function j(){var e=Fe.length;if(e>1){var t=We+1;t>=e&&(t=0,Ge++),We=t,Ne=Fe[We]}else Ge++;Ve(pt)}function B(t,r,n,i){if(r.failswitch&&j(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){S(t,r,n,i)},o):S(t,r,n,i),!0}return!1}function A(e){var t={retry:qe,retried:0,idempotent:!0,failswitch:!0,timeout:ze,client:pt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),C(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?tt.reject(r):tt.resolve(e)};S(g,t,r,tt.reject)}function E(e,t){return function(){return Ze?U(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return U(e,t,r,!1)})}}function k(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Ye?h.promise(function(i,o){Je.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?D(e,t,r):L(e,t,r)}function U(e,t,r,n){return P(t,r,M(e,t,r,n),n)}function N(e,t,r,n){try{r.onerror?r.onerror(e,t):Ke(e,t),n(t)}catch(e){n(e)}}function F(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){S(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();I(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function W(e){return function(){e&&(Ye=!1,a(function(e){e.forEach(function(e){"settings"in e?Q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Je),Je=[])}}function L(e,t,r){r.sync&&(Ye=!0);var n=h.promise(function(n,i){ot(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){N(e,t,r,i)})});return n.whenComplete(W(r.sync)),n}function D(e,t,r){return h.promise(function(n,i){et.push({args:t,name:e,context:r,resolve:n,reject:i})})}function z(e){var t={timeout:ze,retry:qe,retried:0,idempotent:He,failswitch:Qe,oneway:!1,sync:!1,client:pt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function q(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){S(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();I(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function H(){Ze=!0}function Q(e){if(e=e||{},Ze=!1,Ye)return h.promise(function(t,r){Je.push({batch:!0,settings:e,resolve:t,reject:r})});var t=et.length;if(0===t)return h.value([]);var r=z(e);r.sync&&(Ye=!0);var n=et;et=[];var i=h.promise(function(e,t){at(n,r).then(function(t){t.forEach(function(e){if(e.error)N(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&N(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(W(r.sync)),i}function G(){return Ke}function Y(e){typeof e===m&&(Ke=e)}function J(){return Ve}function $(e){typeof e===m&&(Ve=e)}function K(){return Ne}function V(){return Fe}function X(e){if(typeof e===y)Fe=[e];else{if(!Array.isArray(e))return;Fe=e.slice(0),Fe.sort(function(){return Math.random()-.5})}We=0,Ne=Fe[We]}function Z(){return Qe}function ee(e){Qe=!!e}function te(){return Ge}function re(){return ze}function ne(e){ze="number"==typeof e?0|e:0}function ie(){return qe}function oe(e){qe="number"==typeof e?0|e:0}function ae(){return He}function se(e){He=!!e}function ue(e){it=!!e}function ce(){return it}function fe(){return Le}function le(e){Le=!!e}function he(){return De}function pe(e){De=!!e}function ve(){return $e}function ge(e){$e=!!e}function de(){return 0===Xe.length?null:1===Xe.length?Xe[0]:Xe.slice()}function ye(e){Xe.length=0,Array.isArray(e)?e.forEach(function(e){we(e)}):we(e)}function we(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Xe.push(e)}function me(e){var t=Xe.indexOf(e);return t!==-1&&(Xe.splice(t,1),!0)}function be(){return Xe}function Te(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=pt;return n&&(i={}),e||Ne?(e&&(Ne=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(C(i,r),tt.resolve(i),i):(a(A,i),tt)):new Error("You should set server uri first!")}function _e(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ae(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete rt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===nt){if(rt[e]){var i=rt[e];for(r in i)Be(i,r,n)}}else nt.then(function(t){Ae(e,t,n)});else h.isPromise(r)?r.then(function(t){Ae(e,t,n)}):Be(rt[e],r,n);v(rt[e])&&delete rt[e]}function Ee(e){return!!rt[e]}function ke(){var e=[];for(var t in rt)e.push(t);return e}function Ce(){return nt}function Ie(){return null===nt&&(nt=U(pt,"#",[],!1)),nt}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},F)}function Me(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},q)}function xe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){ht.push(e),ut=ht.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},O)}function Ue(e){return Re(e),pt}var Ne,Fe=[],We=-1,Le=!1,De=!1,ze=3e4,qe=10,He=!1,Qe=!1,Ge=0,Ye=!1,Je=[],$e=!1,Ke=r,Ve=r,Xe=[],Ze=!1,et=[],tt=new h,rt=Object.create(null),nt=null,it=!0,ot=F,at=q,st=_,ut=O,ct=[],ft=[],lt=[],ht=[],pt=this;Ie.sync=!0,Ie.idempotent=!0,Ie.failswitch=!0;var vt=Object.create(null,{begin:{value:H},end:{value:Q},use:{value:function(e){return Me(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return xe(e),gt}}}),dt=Object.create(null,{use:{value:function(e){return Pe(e),dt}}});Object.defineProperties(this,{"#":{value:Ie},onerror:{get:G,set:Y},onfailswitch:{get:J,set:$},uri:{get:K},uriList:{get:V,set:X},id:{get:Ce},failswitch:{get:Z,set:ee},failround:{get:te},timeout:{get:re,set:ne},retry:{get:ie,set:oe},idempotent:{get:ae,set:se},keepAlive:{get:ce,set:ue},byref:{get:fe,set:le},simple:{get:he,set:pe},useHarmonyMap:{get:ve,set:ge},filter:{get:de,set:ye},addFilter:{value:we},removeFilter:{value:me},filters:{get:be},useService:{value:Te},invoke:{value:_e},ready:{value:Oe},subscribe:{value:je},unsubscribe:{value:Ae},isSubscribed:{value:Ee},subscribedList:{value:ke},use:{value:Ue},batch:{value:vt},beforeFilter:{value:gt},afterFilter:{value:dt}}),o&&typeof o===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(pt[e]=o[e])}),n&&(X(n),Te(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function v(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function g(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:g},onRequestProgress:{get:d,set:g},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:v}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme."); +}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 69e2156..3cc810c 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index e5a76f4..c19ceee 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -129,10 +129,9 @@ var isObjectEmpty = function (obj) { if (obj) { - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - return false; - } + var prop; + for (prop in obj) { + return false; } } return true; @@ -4939,14 +4938,12 @@ } } function isSubscribed(name) { - return _topics.hasOwnProperty(name); + return !!_topics[name]; } function subscribedList() { var list = []; for (var name in _topics) { - if (_topics.hasOwnProperty(name)) { - list.push(name); - } + list.push(name); } return list; } diff --git a/src/Client.js b/src/Client.js index aceb5a4..6f5bcb5 100644 --- a/src/Client.js +++ b/src/Client.js @@ -1024,14 +1024,12 @@ } } function isSubscribed(name) { - return _topics.hasOwnProperty(name); + return !!_topics[name]; } function subscribedList() { var list = []; for (var name in _topics) { - if (_topics.hasOwnProperty(name)) { - list.push(name); - } + list.push(name); } return list; } diff --git a/src/Helper.js b/src/Helper.js index 41dd2c7..5beace8 100644 --- a/src/Helper.js +++ b/src/Helper.js @@ -96,10 +96,9 @@ var isObjectEmpty = function (obj) { if (obj) { - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - return false; - } + var prop; + for (prop in obj) { + return false; } } return true; From a200c76737c6b1e762303215bf18e7168854dbdf Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 12 Oct 2016 19:22:03 +0800 Subject: [PATCH 49/86] Improved isSubscribed & subscribedList --- dist/hprose-html5.js | 2 +- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 15 +++++++-------- src/Client.js | 15 +++++++-------- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 877009a..4e8c3e8 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -5,5 +5,5 @@ // https://github.com/hprose/hprose-html5 !function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0 -},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=Xe.length;r=0;r--)e=Xe[r].inputFilter(e,t);return e}function _(e,t){return e=p(e,t),ut(e,t).then(function(e){if(!t.oneway)return T(e,t)})}function O(e,t){return pt.sendAndReceive(e,t)}function S(e,t,r,n){st(e,t).then(r,function(i){B(e,t,r,n)||n(i)})}function j(){var e=Fe.length;if(e>1){var t=We+1;t>=e&&(t=0,Ge++),We=t,Ne=Fe[We]}else Ge++;Ve(pt)}function B(t,r,n,i){if(r.failswitch&&j(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){S(t,r,n,i)},o):S(t,r,n,i),!0}return!1}function A(e){var t={retry:qe,retried:0,idempotent:!0,failswitch:!0,timeout:ze,client:pt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),C(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?tt.reject(r):tt.resolve(e)};S(g,t,r,tt.reject)}function E(e,t){return function(){return Ze?U(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return U(e,t,r,!1)})}}function k(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Ye?h.promise(function(i,o){Je.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?D(e,t,r):L(e,t,r)}function U(e,t,r,n){return P(t,r,M(e,t,r,n),n)}function N(e,t,r,n){try{r.onerror?r.onerror(e,t):Ke(e,t),n(t)}catch(e){n(e)}}function F(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){S(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();I(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function W(e){return function(){e&&(Ye=!1,a(function(e){e.forEach(function(e){"settings"in e?Q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Je),Je=[])}}function L(e,t,r){r.sync&&(Ye=!0);var n=h.promise(function(n,i){ot(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){N(e,t,r,i)})});return n.whenComplete(W(r.sync)),n}function D(e,t,r){return h.promise(function(n,i){et.push({args:t,name:e,context:r,resolve:n,reject:i})})}function z(e){var t={timeout:ze,retry:qe,retried:0,idempotent:He,failswitch:Qe,oneway:!1,sync:!1,client:pt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function q(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){S(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();I(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function H(){Ze=!0}function Q(e){if(e=e||{},Ze=!1,Ye)return h.promise(function(t,r){Je.push({batch:!0,settings:e,resolve:t,reject:r})});var t=et.length;if(0===t)return h.value([]);var r=z(e);r.sync&&(Ye=!0);var n=et;et=[];var i=h.promise(function(e,t){at(n,r).then(function(t){t.forEach(function(e){if(e.error)N(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&N(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(W(r.sync)),i}function G(){return Ke}function Y(e){typeof e===m&&(Ke=e)}function J(){return Ve}function $(e){typeof e===m&&(Ve=e)}function K(){return Ne}function V(){return Fe}function X(e){if(typeof e===y)Fe=[e];else{if(!Array.isArray(e))return;Fe=e.slice(0),Fe.sort(function(){return Math.random()-.5})}We=0,Ne=Fe[We]}function Z(){return Qe}function ee(e){Qe=!!e}function te(){return Ge}function re(){return ze}function ne(e){ze="number"==typeof e?0|e:0}function ie(){return qe}function oe(e){qe="number"==typeof e?0|e:0}function ae(){return He}function se(e){He=!!e}function ue(e){it=!!e}function ce(){return it}function fe(){return Le}function le(e){Le=!!e}function he(){return De}function pe(e){De=!!e}function ve(){return $e}function ge(e){$e=!!e}function de(){return 0===Xe.length?null:1===Xe.length?Xe[0]:Xe.slice()}function ye(e){Xe.length=0,Array.isArray(e)?e.forEach(function(e){we(e)}):we(e)}function we(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Xe.push(e)}function me(e){var t=Xe.indexOf(e);return t!==-1&&(Xe.splice(t,1),!0)}function be(){return Xe}function Te(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=pt;return n&&(i={}),e||Ne?(e&&(Ne=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(C(i,r),tt.resolve(i),i):(a(A,i),tt)):new Error("You should set server uri first!")}function _e(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ae(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete rt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===nt){if(rt[e]){var i=rt[e];for(r in i)Be(i,r,n)}}else nt.then(function(t){Ae(e,t,n)});else h.isPromise(r)?r.then(function(t){Ae(e,t,n)}):Be(rt[e],r,n);v(rt[e])&&delete rt[e]}function Ee(e){return!!rt[e]}function ke(){var e=[];for(var t in rt)e.push(t);return e}function Ce(){return nt}function Ie(){return null===nt&&(nt=U(pt,"#",[],!1)),nt}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},F)}function Me(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},q)}function xe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){ht.push(e),ut=ht.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},O)}function Ue(e){return Re(e),pt}var Ne,Fe=[],We=-1,Le=!1,De=!1,ze=3e4,qe=10,He=!1,Qe=!1,Ge=0,Ye=!1,Je=[],$e=!1,Ke=r,Ve=r,Xe=[],Ze=!1,et=[],tt=new h,rt=Object.create(null),nt=null,it=!0,ot=F,at=q,st=_,ut=O,ct=[],ft=[],lt=[],ht=[],pt=this;Ie.sync=!0,Ie.idempotent=!0,Ie.failswitch=!0;var vt=Object.create(null,{begin:{value:H},end:{value:Q},use:{value:function(e){return Me(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return xe(e),gt}}}),dt=Object.create(null,{use:{value:function(e){return Pe(e),dt}}});Object.defineProperties(this,{"#":{value:Ie},onerror:{get:G,set:Y},onfailswitch:{get:J,set:$},uri:{get:K},uriList:{get:V,set:X},id:{get:Ce},failswitch:{get:Z,set:ee},failround:{get:te},timeout:{get:re,set:ne},retry:{get:ie,set:oe},idempotent:{get:ae,set:se},keepAlive:{get:ce,set:ue},byref:{get:fe,set:le},simple:{get:he,set:pe},useHarmonyMap:{get:ve,set:ge},filter:{get:de,set:ye},addFilter:{value:we},removeFilter:{value:me},filters:{get:be},useService:{value:Te},invoke:{value:_e},ready:{value:Oe},subscribe:{value:je},unsubscribe:{value:Ae},isSubscribed:{value:Ee},subscribedList:{value:ke},use:{value:Ue},batch:{value:vt},beforeFilter:{value:gt},afterFilter:{value:dt}}),o&&typeof o===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(pt[e]=o[e])}),n&&(X(n),Te(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function v(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function g(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:g},onRequestProgress:{get:d,set:g},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:v}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme."); +},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=Xe.length;r=0;r--)e=Xe[r].inputFilter(e,t);return e}function _(e,t){return e=p(e,t),ut(e,t).then(function(e){if(!t.oneway)return T(e,t)})}function O(e,t){return pt.sendAndReceive(e,t)}function S(e,t,r,n){st(e,t).then(r,function(i){B(e,t,r,n)||n(i)})}function j(){var e=Fe.length;if(e>1){var t=We+1;t>=e&&(t=0,Ge++),We=t,Ne=Fe[We]}else Ge++;Ve(pt)}function B(t,r,n,i){if(r.failswitch&&j(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){S(t,r,n,i)},o):S(t,r,n,i),!0}return!1}function A(e){var t={retry:qe,retried:0,idempotent:!0,failswitch:!0,timeout:ze,client:pt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),C(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?tt.reject(r):tt.resolve(e)};S(g,t,r,tt.reject)}function E(e,t){return function(){return Ze?U(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return U(e,t,r,!1)})}}function k(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Ye?h.promise(function(i,o){Je.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?D(e,t,r):L(e,t,r)}function U(e,t,r,n){return P(t,r,M(e,t,r,n),n)}function N(e,t,r,n){try{r.onerror?r.onerror(e,t):Ke(e,t),n(t)}catch(e){n(e)}}function F(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){S(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();I(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function W(e){return function(){e&&(Ye=!1,a(function(e){e.forEach(function(e){"settings"in e?Q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Je),Je=[])}}function L(e,t,r){r.sync&&(Ye=!0);var n=h.promise(function(n,i){ot(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){N(e,t,r,i)})});return n.whenComplete(W(r.sync)),n}function D(e,t,r){return h.promise(function(n,i){et.push({args:t,name:e,context:r,resolve:n,reject:i})})}function z(e){var t={timeout:ze,retry:qe,retried:0,idempotent:He,failswitch:Qe,oneway:!1,sync:!1,client:pt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function q(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){S(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();I(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function H(){Ze=!0}function Q(e){if(e=e||{},Ze=!1,Ye)return h.promise(function(t,r){Je.push({batch:!0,settings:e,resolve:t,reject:r})});var t=et.length;if(0===t)return h.value([]);var r=z(e);r.sync&&(Ye=!0);var n=et;et=[];var i=h.promise(function(e,t){at(n,r).then(function(t){t.forEach(function(e){if(e.error)N(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&N(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(W(r.sync)),i}function G(){return Ke}function Y(e){typeof e===m&&(Ke=e)}function J(){return Ve}function $(e){typeof e===m&&(Ve=e)}function K(){return Ne}function V(){return Fe}function X(e){if(typeof e===y)Fe=[e];else{if(!Array.isArray(e))return;Fe=e.slice(0),Fe.sort(function(){return Math.random()-.5})}We=0,Ne=Fe[We]}function Z(){return Qe}function ee(e){Qe=!!e}function te(){return Ge}function re(){return ze}function ne(e){ze="number"==typeof e?0|e:0}function ie(){return qe}function oe(e){qe="number"==typeof e?0|e:0}function ae(){return He}function se(e){He=!!e}function ue(e){it=!!e}function ce(){return it}function fe(){return Le}function le(e){Le=!!e}function he(){return De}function pe(e){De=!!e}function ve(){return $e}function ge(e){$e=!!e}function de(){return 0===Xe.length?null:1===Xe.length?Xe[0]:Xe.slice()}function ye(e){Xe.length=0,Array.isArray(e)?e.forEach(function(e){we(e)}):we(e)}function we(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Xe.push(e)}function me(e){var t=Xe.indexOf(e);return t!==-1&&(Xe.splice(t,1),!0)}function be(){return Xe}function Te(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=pt;return n&&(i={}),e||Ne?(e&&(Ne=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(C(i,r),tt.resolve(i),i):(a(A,i),tt)):new Error("You should set server uri first!")}function _e(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ae(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete rt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===nt){if(rt[e]){var i=rt[e];for(r in i)Be(i,r,n)}}else nt.then(function(t){Ae(e,t,n)});else h.isPromise(r)?r.then(function(t){Ae(e,t,n)}):Be(rt[e],r,n);v(rt[e])&&delete rt[e]}function Ee(e){return!!rt[e]}function ke(){var e=[];for(var t in rt)e.push(t);return e}function Ce(){return nt}function Ie(){return null===nt&&(nt=U(pt,"#",[],!1)),nt}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},F)}function Me(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},q)}function xe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){ht.push(e),ut=ht.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},O)}function Ue(e){return Re(e),pt}var Ne,Fe=[],We=-1,Le=!1,De=!1,ze=3e4,qe=10,He=!1,Qe=!1,Ge=0,Ye=!1,Je=[],$e=!1,Ke=r,Ve=r,Xe=[],Ze=!1,et=[],tt=new h,rt=Object.create(null),nt=null,it=!0,ot=F,at=q,st=_,ut=O,ct=[],ft=[],lt=[],ht=[],pt=this;Ie.sync=!0,Ie.idempotent=!0,Ie.failswitch=!0;var vt=Object.create(null,{begin:{value:H},end:{value:Q},use:{value:function(e){return Me(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return xe(e),gt}}}),dt=Object.create(null,{use:{value:function(e){return Pe(e),dt}}});Object.defineProperties(this,{"#":{value:Ie},onerror:{get:G,set:Y},onfailswitch:{get:J,set:$},uri:{get:K},uriList:{get:V,set:X},id:{get:Ce},failswitch:{get:Z,set:ee},failround:{get:te},timeout:{get:re,set:ne},retry:{get:ie,set:oe},idempotent:{get:ae,set:se},keepAlive:{get:ce,set:ue},byref:{get:fe,set:le},simple:{get:he,set:pe},useHarmonyMap:{get:ve,set:ge},filter:{get:de,set:ye},addFilter:{value:we},removeFilter:{value:me},filters:{get:be},useService:{value:Te},invoke:{value:_e},ready:{value:Oe},subscribe:{value:je},unsubscribe:{value:Ae},isSubscribed:{value:Ee},subscribedList:{value:ke},use:{value:Ue},batch:{value:vt},beforeFilter:{value:gt},afterFilter:{value:dt}}),o&&typeof o===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(pt[e]=o[e])}),n&&(X(n),Te(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function v(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function g(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:g},onRequestProgress:{get:d,set:g},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:v}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme."); }function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 3cc810c..4dbd59f 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index c19ceee..c516e2e 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -4789,16 +4789,12 @@ function ready(onComplete, onError) { return _ready.then(onComplete, onError); } - function getTopic(name, id, create) { + function getTopic(name, id) { if (_topics[name]) { var topics = _topics[name]; if (topics[id]) { return topics[id]; } - return null; - } - if (create) { - _topics[name] = Object.create(null); } return null; } @@ -4816,6 +4812,9 @@ throw new TypeError('callback must be a function.'); } } + if (!_topics[name]) { + _topics[name] = Object.create(null); + } if (typeof id === s_function) { timeout = callback; callback = id; @@ -4834,7 +4833,7 @@ return; } if (timeout === undefined) { timeout = _timeout; } - var topic = getTopic(name, id, true); + var topic = getTopic(name, id); if (topic === null) { var cb = function() { _invoke(self, name, [id, topic.handler, cb, { @@ -4845,7 +4844,7 @@ }; topic = { handler: function(result) { - var topic = getTopic(name, id, false); + var topic = getTopic(name, id); if (topic) { if (result !== null) { var callbacks = topic.callbacks; @@ -4856,7 +4855,7 @@ catch (e) {} } } - if (getTopic(name, id, false) !== null) { cb(); } + if (getTopic(name, id) !== null) { cb(); } } }, callbacks: [callback] diff --git a/src/Client.js b/src/Client.js index 6f5bcb5..8fc8fcc 100644 --- a/src/Client.js +++ b/src/Client.js @@ -875,16 +875,12 @@ function ready(onComplete, onError) { return _ready.then(onComplete, onError); } - function getTopic(name, id, create) { + function getTopic(name, id) { if (_topics[name]) { var topics = _topics[name]; if (topics[id]) { return topics[id]; } - return null; - } - if (create) { - _topics[name] = Object.create(null); } return null; } @@ -902,6 +898,9 @@ throw new TypeError('callback must be a function.'); } } + if (!_topics[name]) { + _topics[name] = Object.create(null); + } if (typeof id === s_function) { timeout = callback; callback = id; @@ -920,7 +919,7 @@ return; } if (timeout === undefined) { timeout = _timeout; } - var topic = getTopic(name, id, true); + var topic = getTopic(name, id); if (topic === null) { var cb = function() { _invoke(self, name, [id, topic.handler, cb, { @@ -931,7 +930,7 @@ }; topic = { handler: function(result) { - var topic = getTopic(name, id, false); + var topic = getTopic(name, id); if (topic) { if (result !== null) { var callbacks = topic.callbacks; @@ -942,7 +941,7 @@ catch (e) {} } } - if (getTopic(name, id, false) !== null) { cb(); } + if (getTopic(name, id) !== null) { cb(); } } }, callbacks: [callback] From 4368bb4bdba814af106c8d7f7a6f628563f14516 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 12 Oct 2016 19:23:55 +0800 Subject: [PATCH 50/86] Update lastModifed --- dist/hprose-html5.src.js | 4 ++-- src/Client.js | 2 +- src/Helper.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index c516e2e..67f0ffd 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -46,7 +46,7 @@ * * * hprose helper for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 12, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -3926,7 +3926,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 12, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ diff --git a/src/Client.js b/src/Client.js index 8fc8fcc..4e4a6a7 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 12, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ diff --git a/src/Helper.js b/src/Helper.js index 5beace8..145c7f2 100644 --- a/src/Helper.js +++ b/src/Helper.js @@ -13,7 +13,7 @@ * * * hprose helper for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 12, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ From c4b2cea1a728fad188e204b6d38a69a510a890af Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 21 Oct 2016 14:00:21 +0800 Subject: [PATCH 51/86] Fixed a bug of Future. --- bower.json | 2 +- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 8 ++++---- package.json | 2 +- src/CopyRight.js | 2 +- src/Future.js | 6 +++--- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/bower.json b/bower.json index 696bcaa..4755152 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.19", + "version": "2.0.20", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 4e8c3e8..424dd02 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.19 +// Hprose for HTML5 v2.0.20 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return i(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0 +!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return n(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0 },_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=Xe.length;r=0;r--)e=Xe[r].inputFilter(e,t);return e}function _(e,t){return e=p(e,t),ut(e,t).then(function(e){if(!t.oneway)return T(e,t)})}function O(e,t){return pt.sendAndReceive(e,t)}function S(e,t,r,n){st(e,t).then(r,function(i){B(e,t,r,n)||n(i)})}function j(){var e=Fe.length;if(e>1){var t=We+1;t>=e&&(t=0,Ge++),We=t,Ne=Fe[We]}else Ge++;Ve(pt)}function B(t,r,n,i){if(r.failswitch&&j(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){S(t,r,n,i)},o):S(t,r,n,i),!0}return!1}function A(e){var t={retry:qe,retried:0,idempotent:!0,failswitch:!0,timeout:ze,client:pt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),C(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?tt.reject(r):tt.resolve(e)};S(g,t,r,tt.reject)}function E(e,t){return function(){return Ze?U(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return U(e,t,r,!1)})}}function k(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Ye?h.promise(function(i,o){Je.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?D(e,t,r):L(e,t,r)}function U(e,t,r,n){return P(t,r,M(e,t,r,n),n)}function N(e,t,r,n){try{r.onerror?r.onerror(e,t):Ke(e,t),n(t)}catch(e){n(e)}}function F(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){S(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();I(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function W(e){return function(){e&&(Ye=!1,a(function(e){e.forEach(function(e){"settings"in e?Q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Je),Je=[])}}function L(e,t,r){r.sync&&(Ye=!0);var n=h.promise(function(n,i){ot(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){N(e,t,r,i)})});return n.whenComplete(W(r.sync)),n}function D(e,t,r){return h.promise(function(n,i){et.push({args:t,name:e,context:r,resolve:n,reject:i})})}function z(e){var t={timeout:ze,retry:qe,retried:0,idempotent:He,failswitch:Qe,oneway:!1,sync:!1,client:pt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function q(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){S(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();I(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function H(){Ze=!0}function Q(e){if(e=e||{},Ze=!1,Ye)return h.promise(function(t,r){Je.push({batch:!0,settings:e,resolve:t,reject:r})});var t=et.length;if(0===t)return h.value([]);var r=z(e);r.sync&&(Ye=!0);var n=et;et=[];var i=h.promise(function(e,t){at(n,r).then(function(t){t.forEach(function(e){if(e.error)N(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&N(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(W(r.sync)),i}function G(){return Ke}function Y(e){typeof e===m&&(Ke=e)}function J(){return Ve}function $(e){typeof e===m&&(Ve=e)}function K(){return Ne}function V(){return Fe}function X(e){if(typeof e===y)Fe=[e];else{if(!Array.isArray(e))return;Fe=e.slice(0),Fe.sort(function(){return Math.random()-.5})}We=0,Ne=Fe[We]}function Z(){return Qe}function ee(e){Qe=!!e}function te(){return Ge}function re(){return ze}function ne(e){ze="number"==typeof e?0|e:0}function ie(){return qe}function oe(e){qe="number"==typeof e?0|e:0}function ae(){return He}function se(e){He=!!e}function ue(e){it=!!e}function ce(){return it}function fe(){return Le}function le(e){Le=!!e}function he(){return De}function pe(e){De=!!e}function ve(){return $e}function ge(e){$e=!!e}function de(){return 0===Xe.length?null:1===Xe.length?Xe[0]:Xe.slice()}function ye(e){Xe.length=0,Array.isArray(e)?e.forEach(function(e){we(e)}):we(e)}function we(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Xe.push(e)}function me(e){var t=Xe.indexOf(e);return t!==-1&&(Xe.splice(t,1),!0)}function be(){return Xe}function Te(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=pt;return n&&(i={}),e||Ne?(e&&(Ne=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(C(i,r),tt.resolve(i),i):(a(A,i),tt)):new Error("You should set server uri first!")}function _e(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ae(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete rt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===nt){if(rt[e]){var i=rt[e];for(r in i)Be(i,r,n)}}else nt.then(function(t){Ae(e,t,n)});else h.isPromise(r)?r.then(function(t){Ae(e,t,n)}):Be(rt[e],r,n);v(rt[e])&&delete rt[e]}function Ee(e){return!!rt[e]}function ke(){var e=[];for(var t in rt)e.push(t);return e}function Ce(){return nt}function Ie(){return null===nt&&(nt=U(pt,"#",[],!1)),nt}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},F)}function Me(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},q)}function xe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){ht.push(e),ut=ht.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},O)}function Ue(e){return Re(e),pt}var Ne,Fe=[],We=-1,Le=!1,De=!1,ze=3e4,qe=10,He=!1,Qe=!1,Ge=0,Ye=!1,Je=[],$e=!1,Ke=r,Ve=r,Xe=[],Ze=!1,et=[],tt=new h,rt=Object.create(null),nt=null,it=!0,ot=F,at=q,st=_,ut=O,ct=[],ft=[],lt=[],ht=[],pt=this;Ie.sync=!0,Ie.idempotent=!0,Ie.failswitch=!0;var vt=Object.create(null,{begin:{value:H},end:{value:Q},use:{value:function(e){return Me(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return xe(e),gt}}}),dt=Object.create(null,{use:{value:function(e){return Pe(e),dt}}});Object.defineProperties(this,{"#":{value:Ie},onerror:{get:G,set:Y},onfailswitch:{get:J,set:$},uri:{get:K},uriList:{get:V,set:X},id:{get:Ce},failswitch:{get:Z,set:ee},failround:{get:te},timeout:{get:re,set:ne},retry:{get:ie,set:oe},idempotent:{get:ae,set:se},keepAlive:{get:ce,set:ue},byref:{get:fe,set:le},simple:{get:he,set:pe},useHarmonyMap:{get:ve,set:ge},filter:{get:de,set:ye},addFilter:{value:we},removeFilter:{value:me},filters:{get:be},useService:{value:Te},invoke:{value:_e},ready:{value:Oe},subscribe:{value:je},unsubscribe:{value:Ae},isSubscribed:{value:Ee},subscribedList:{value:ke},use:{value:Ue},batch:{value:vt},beforeFilter:{value:gt},afterFilter:{value:dt}}),o&&typeof o===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(pt[e]=o[e])}),n&&(X(n),Te(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function v(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function g(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:g},onRequestProgress:{get:d,set:g},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:v}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme."); }function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 4dbd59f..1954d6c 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQC3LgEAAAAAAAAQmYqm/+79+uF6wQ7yA/9nZiht3AzuFS3va6nYBT9HOKg/kUnkX8PG7WjQ6uQrVmBjEeQng7HJNo0yUL7XIyi/M0QhGpoIRxtz+Lt1rLx0eeNgRF6zc2hSskkgtUljxCYZLONNgVz+73QVu90dLWcqSeBhvtOaj2kEaEVesE/Xmhgw2GbjmK+96SOJ+H8kzfRkFhFlqBFA3PCSDlbFUq9OTl4poW23kmqDcPMKuL6blxcl3/yuMOty9VSApnGydcInGtwg67hBIZzsBE2XaMbnuzkuArePEUqkm+kVqCQTHNeoIMoHnfp1/+1J1Q6i5vdlKEBgd+FSE8WWphSSUDEJpEGDY8zKwISHThHCiBOXa8Gq5oDmDvNFs2TY0lZlznHGMZG4+L/t9GjcDP3WNCSAp+5Buq+HLmA5wnOUxip0xbviAR43GvfFzBGxd+ibsccCkqvqPggRDH7cIkECpYcLaCrCUUHX0dOB0TpqQLIouiWmX9gVE1GRGJIliCvBavsIyOVBfUiyNRx2VJgUiWlQyrVQBqlZfdQsmuZMHzZ1G63kCbO3ftUvFPLX7aZO7QufTUGzWDPfIDJfVjEaosAp0l2td/92j9NG6FFh1ziyYfr/Ho2FxrEpS+pwaa5SLeDKQuP8deoNCgD1von9yIcm6Ew8zqL8jApfY/dP4zfaTC7ohN3yXZF0NWlPLxkuVve8foNjB+OGsF79u5NjY6Bz/S+c+J3sAIElMhcJ/pEHaBZGNLKnfSB+PA+OMLF1YK6c2eiKWUwpRTPTLJHlMnDbIoxxBH9ibfLpPMoxi1wPpouDLNLQ9cwgETnpFxTakir8IK66CxQaikWDeuEG/68GbVj9kw0mBdhXWiWlnUrZcxB0iqo+glyWm2Bo3rIhXEXGl6Xm8XaURwcZK+4Cv6pS+mttW7pQeF6t6l6n258zwJoxLARlWGnoSTD6IMFfOUr0xh4HazqAiSaDd/Z0/Xc2t1rWVO1RwCUEJe3reP9rG4Dea52F4A705HLlrGja3AAEDGSbYmoASbI3mGZSIgFEagwDCl3e0ClGgAwwwSVSL7k8hJoSV2XbL71E/KtbLET1AU5lan3hHEqbw+fNOUmwZVERjmdwsarAryZGTGMM79oBA3szk3KMHUXlWnsLXUdfXSXtxDXEhlfF8z5qMSjzv0ALzH6RuBMXqSH1FVTR722Es/FG5ac1IAB+nfrD00i/KhDNW8sj0aMWCkipQCbuKkyUzCx2cyYNrjlyqKXlAhrFv2saop2SfPSPgRHF2+0Sbu992uviFxYLEAMJJwJ1UZ6eN9BhQ30sdlih7m6iw2Li+SkBo0vRXzBpXaeYoLLbGIaIGmjtNvH56XUH5+nFrFBw6GePt1Apq0x86M1UMuHfUuAvZei7z6+xzd9yh+agdg4X+2mDM04igzImAvBlDYqozZAoiMp2vUpZ3JLm6DX/TUeJltbLWmQRQxYW78kRT23f4vuSs5RWMYJUT2j+3EgjMcDAEuGBkAWnHusyhAMez3rPv31pP2q/JAA9EMHiE0v0cU669JjTC9e83DDeL2AxUOP432aCNBoNzKrdlFMYvWl3We7e/FCOAVB42gUQ7AGDQaodZWYS6kUZdsNSK5/5w9PakKKmBKB3rl6TpbZFr9ciy5gyNok07LRcpXX3zz0bFWGLwLycFeixSP8dKInKPASykR8mt3rc4Snn/4E9YSq8pofYmg0egue9L7X3V9QnhtZXMi8s1VGmdL19IPA0PHxqhRp4KLfUIVBClVIAh3RH8Sq2ejA7WDZGAXJFjbUgAfRZveHjVmrTNap6Ndqhmh/iLDjVsXtuJRs9xIfsUXR2O7xWULw1Qk2FcRZzBN9hJReiMUoW7I1WYKENoxHUOkbvXLm1iPHizpc//QaSgNUwzeqzkBFEotgCF8IYVUOrlHObqGtf77r2LEB5TJJdOoCgHJPtovt9A0Q1CC/893sSQcKa01At1aquTSanTVtv8LoeDlhzJeOX6jQRouPn9tve7k3ZiF86FQKGTH1/Tj3rKujCwSKpiTFTSuVGTPUSVJQ7BmGZ60qL8CB4DniSmjYkbfrUpfxAtOFCL8bYXR5RZqMgZa44v24j3VYGhvyr41SVf4+7i0BppEpV9dYUHyRbjXnVFsF6vvbp2kSiaeMxkywgR2I2VtaBqQNDMJ4weo88tdOlWZ7uidDSBEKOspdt1Xc3n26KbeJ22KI2QAy00M9uwLJte08Ckdtqfv+55tU8UF2eOJJfXur4EI4XEq4RzKhTVfbSeqo7PULjIEdVQonWlvhnq1A66/P/vkzXI66LruwLp8ZjyWH/zfFFL5PSDYOg+YeISXWdhfxByxI5KxAvp0AhmHM/v33DEPBuy45YhNJU4ruYhF9A/17jSagqJyDKNLM8R4xAYM2AeCYaO/1OSGR14bx5N4D8AzY8CgxXbjLt8vLEqexTIVei2QFQM8sFGrGjI/NS67pcphZdUp3oXa3+sCcBhkCEOxys4NhvRSXpTjAmxtGITzoZryHOwysBgzBZigjXMVZfSeHLveJLS5eDFPZp5/FfjsXt/KYAxlUVE8SijRN2p1B1mLGQfHBNqAKnOr06Mk353SbiNSdyd4Kvo5vqYDwv1n/l9uTSO2g2l/5jo5VQZ2w2xty2Dk5ndi5jrvk2Fva9eFljYZxAO1XK8m1Qb9lUw5VDQMr32D+Y7AL/NCi3qfgGRoWU6mZeyLblqz4ulk2Vmxocy5ucSOWDOyQmKL4Gg1oRwaiysiWqbUPFhBO7DryW5b427fGdflP4HJEc0b8ZGF0LJ0Z7jLJMFIn0fs5iNriJLqJXZibk8ow1nGi5IS3D508VqavUiRuZ8xrz/jI+VBEHTWfWgZLYUPhKob9NcUOaDVXbjusaQHVdqtyoB2hXipgCXDRggOGKHsSgTJXVQBAtjeo7ZJJamvXg4UY7HzZmkwskwEPPCtjD18NhuWnHm0+8fU7nFsmsh4qt3yTURJIlSCzIpx2ahX2sJnShK1RorgnUGsalx3LzAbqtBBXw/typZNvnaKMhMtl70n9ozR9mnF7pO94qXhLdfjkW4u4Xw12QaAuCwdxBRp1kwbQRndze2NuUgG+z+zxHCHVcOeVgYUrBdDInOZ5WWHn0T/MLQu+9dTtNdpgm8w4tisqecW5RzIWC7dxFqR/BQcPw5DLvP5BZTw4OGGan/Vp49zV2lNPREmlzX/kuW12tmcU4rlmXTmaDNILjeOU8XVc8vEVhfJKjpW1O+93XZtMzoISeI0hw+LzUqmz1xgihai6KUdHT1c032BR3c/TbUagKrES8+M31pzM9FfySEPpdLSrTd7g+Zpw/IJ32xarat4h+m7+6AIfB8dcClj2sMI8CO/bOTk/eNMr8tTxcjN8ajP068rNkF76mxHr5xmUCJV6Q+y9J/4JqBZPBg5GIpXDbx/ztfuRU0jcJDxUh4QE1CGciryYmWgyi5WjDiGIp+uJlkgCyDPv+52KMZTsCE9O+OLwpnDkE6WYl1xdmwTsc3S5Z69eEm1jXgRzIm7UO3TXQed7QmnP5WZWmgADj3WFRhXrkVatqsL/L+Vrs+NBChGT23aDyl2Ydz2ngPKydguowg+7rz/vWL4uk3vp6048C2sHYhcu5/sgUBcBsVKTva7CtznlRJZWXqSRxVy5+GjC/YIuPl8GbfY2gNaLMliW+mZ+x9/m1RVofE2wFttGeTZ/ALnql8tkqzE8dRV8zjc9Y7g5cjk5zb+mPhW+PFikPFFlCsNFoTv+Of7UvFGWLOV/XnGKVa8W3H/Rt62U3fKRfWJw+lfyz3fK7u5QhUKNRsDwHerj4e3OADrAmMnS11NeVKdrRqohJ+zSUzl8pCjWzLWv+ihY1ge+tivr+VlKzR2Hj58KpBoMfyZkAAD5ZTAd/8h5rwq1oZi5EE75tQ06VV4MiUyvo3BqpR0uPlc5Wc5ZMhpYAHdzPoGS5OspYt643xZmLoB8TFBRKyqIrdm7KUg2ihR36HQpRG7Qa/RNOyHIsqR0t+4RuaUm4WzgNCIH/hVOWThEUpdLAW6PIH5IM2m4L6qW19pCJwnFeMVCw++q8D1nHT4XDxlngmKmkQeWBgTncF5CYW611GYIIJ2Pjmb2wsVSlJCsFV4PfieeNFppui9BVH/3hHDngrize0YG09kMKlINXmOnfJlFZi38SXRTzqrUvhw9Kw2TWUyKzbKTWtNQpf09V0dQptuSaCbIPyOUOgA+fDEr/M4nXWdMu564kbQEXtC3ph+BuJQvu8ApURPIH0QrGIXoaPjWdCxWujrbE7Ji1NnveGsTjl2EvK6vQN5HCGk9t8tVrBtTznczT/lXYaMYslEZ55fXbVY0cl9W4t6KAjEJtVuBNXiJD0fhsG4w/1BqQJnyxXCeleyTq5ZDtCrZXWJ6dKRY2vOpRAaZRPBDCchYVclLPI2gI9u5kLTvHZs5VhZbFYUbRl3v4wR8xo28zVgneBARdox+pqfL5HYNzfwijXCh4kIIq/5+xqbmA3YH0M6tEoZkt6BJCYDaXuxTP16dtD8d4qz9vLpVHBl3++epcm9bKSIGbMFK61g1JINw8PVFZ5FjvR5ggHWuzM/pHvniEb+w/xQmkpB1xrCMXCvncjbe1lWSlbgj0Xu86cjtfaG+awuulraXI7zmpTUX6gtgRWz1YybPcHJ81nqI+j5ycJw+HXJELPFCaaue59VQ8pTYCqsioRIah9MzSe5fkHbHQZIP6m55h2b76NLrcc08JwGihLnVjlWLTsvSHtT8gguiI6WXf7VgB2Hsab5Ifg3RJMklLpohEAbLlpLrdo1mjSNoLJ3iRtnRviVsMvEZHTC/sS7B2zVqoRW98Og948KHMrIktz1fn6dc3MDjeKF61rLfrXch9D5C+8LjzxzPyNRv2i5g4513JR+Mhc9Y4xr+TF255SQTtUbh78HOVXmUsOau5aQ0xqJesqiTvU3OyJjS+L6c6CXp8ob4HNKTpLlxquPoVUnKD1sT50WjJDMvncKe+JBUxu6Rds5MmDMK4QlLe0UJQmWPyb6dBSPh8MvCZURPhYL3BwZZOfR8McXbEjlG0G8xeUudWCIPqf6do7QPiNLY8XbHd3qWiBqKmQUZQKjEsAvQ9iXIaeyZRkvG6LweuXAVpuo861RGlO3HObqgB2va9ig8BB5AKZzF08wFPySxrs9LsUbI82YxXM5DglSc5v/x5xQj5AfMnuXPZtk1b5e72Jk/2RgIwChMVm1oflKkiUj1jy9bxe5dO1JPXEKPPusX3pCge06XHVL+/VzsGWWwxh5rdgdVyGJTpTNJhTvXMABQPado4IB42c7hap+ZEnGZ3eY6fjiTcLo4TY8gDeNX1ek2zeMAsZix/sgKoiktMKVelcJybl4ACMP4Wbqp8NZdL0GmP9xy3hHyIh1khHoVMfme5OEpQxqkxOJ+erXVny6Nua9qSl7Ei69zX/4zrgA33OcbDrAckPrvZiIoOovjMeiaPG+YsUWmfZ24Eu+I2s/siMMSh+l7gNQ6tLe+PXuMCp31341xPt4LxRfxbj3PkUVWYeLjsqHYUx+U1j3IJ1lzA3WRsDYLZOK0FE/ItIWp8pOybZQojOAdxct4IYiet4QkooG5c7c8xM2oOksXR6qHjgymf7hADROvwOhIh3Jj8uCdWxQuu/huRgUi6MCtQLy5WaQoW2+uRo265T2Z4+8dPQVcnjkanyGt22R90chnFtgWGkKjqTgAlwQDi043W7BbcTfzOyYFOZwxrlTGp3bs1p4QwRa8RPU7HsGmmmUAccPSu3jEilkuuuf0nbXATABU6URT761rQyMBz/T/LCoTpTrCf9syPspzvt0hMYl0LBjFqGHs/8U5WzrqZnY3gdsigRfDellA4Lg8HVoLFvGHVSdkAUOiuaaV9nBtysXJyOwJTZJfKgZ53mFlSlOk9NsTSrMgftVpwMIsN3RulgdL/qBO4bswdXL2G0jWaZzTxx7642eikwx4knWxG62F7dGXTWnhPFlApdAij/JvnBw9ZKGwFrmWako1I+1v52trgQ6vGGkC+CxMVJVt1GpgDMpsT3t3txJvUlVZ0BljuVXl5KiBlBitL5xldL4sU3S8Uqe8kIc3gWVxteY53/ny57tHllp6WHWYfpb5eWrnby7o79eA+sQdWBDj3pfMzcj40G3sH3YGs5ZssqAZ3uQcWYUY8DMVmx+GpbGUwzvOCnhb3r7PWduPsVXKUxJp/23Trf6LlSCWZHvTw0yeK7lePPP1W38MoB4rWG5dm14MvJIXTJO7B50ph9s6226Dw+HWpT0QYTAh7n4YPfvHqJaAK72y6LnnM9hwVR0Jr5GhvEPuZN6WV0Je1uKeBpdHCFqSHm1VsJGuq4Q2XJ3A2QujzdHUhquCRr7Ss+dLo2J9pLvFIRBCpJPGixcCQZm2h1NC0ZbF72g0wMmKy8dRvYAnb2sC9ZfJZw4XFD9QpSMH7RgAislny/FFC1NYeRrkZtKQj51Sdq2JBMypnysxA0q5Zy0zsXNNbRuJhUC4T/kwr4neQQKmfVULkqmCaq+oSVb7nbELx4+wbYxVCKmllnTQ2GDiC1KwN6MoepXEQL6f6mnAR5Gk0sZ/SLlef/epZHRLbGWHu4HPeH02yqvRuJNt4+i0e6u/vR8o744vWFisD/qoZJj0qu5yjCwkvMM9zggLm6PWWgbrGXvIhxaxkYopZE0eiw8XR3iJ4BygEEXPzBVAoRP8I1UveSbIMF+xNzzwKKmluJEgm+vVuAFPThxLuDnErEDiNV34sW3+Up+UoUGhxRBbqfMC2aYdoE0cLB3oYpvecOBFWOn178qZFZ7sXP+mMrEloxFeN7Nvo8qMUVGxsb73VE9ME/9Zbf4NvjJj9Rq468gf41LjB4lLsr4zju+r+/zAr+hfYb/lnjxd77IPNzFKhRvoGwtmHrEyIy2f4CXCE73EddtpNpFyvrDPv03p9OpelRVhZj+GoF1WRacd7M7ayrfmbqvRAiW6D5zHBYlxfMaJYjKSvoUd7nW/5+A4lz8C1tdN1f5CGe9uY5aP9mGBlxfEux/aIQQCHGwJn/H2sPTqO7eVCqeIc/C4FRiTEx7sPW1vPw6A0y2dlWQtTjQrMInA6Yjo/DFcbF1i0VyauY1RmtT3i0desSlNBXnt2mRG1CctdFl9ZEURRGPmw6bTMen6lDszPDygcRAsRU9b1rC3/IDHpBD3dqDNfjbeVN12u30Fjwn69vuzr5Fo7XL0UPIYNDmcnTX1jpU9oQK6m03QZ2Fg1ahyVai/5kDZY262CPQaUSMV3JyNRpejD0ifbATepXMe3gEI4Vq4Gc3N+Oi56LseXFcNkhtFOZHTP71MC888PYee8mAmAeVj4gEynyRdcrqcz5/hW7LpmLMScuXKPG9UU8dx1huISBhdeugN3oWwmv4zKhB2nllFHL2TPUQ8z4XFNFhtNryFLoD1ng4ctSAWYNCjozkrZAlV5zdTvxp318SPG2LIskx0P/CzXrSB5o2HQz0L17PnR8csQNhI7G7NA4CChfn9OsTcGaBSY9x4tFt3PEuIgC25i+Q2EQxu/N3+Hztzo8SyuXy6ntpggixABqHgx8a3QiYWyUCD3TAR86YNKWteLFUZwvZv+Zm31pcRUhhfdaDaQiMe5WFYSd9okRXspSQCQaTWXc2m4yO7faCh5tqqzpeds2ZiB2aHBoH3RnpV641MvLiD4hVmupGQoaQsYzIKZq4ci4MrezHtvFt4t2YuOCORTfq6khvjdOSo5qRNZO+54uQUdcWbdc87v6Gd9K3xKpEj6ddArHrQr72ovCoNKUCDi1wZIL8qgj/zz7wMqp+w4ohPP3DHDm1CPFGPYOnt9RO3ELStJ9wS9l0hZL8sU9lIwYyMAeut7XphE7afGlsfvPb/U2sz/laCmGuvKk84cVrQwfHpeqrG0RRXklESSVyHUogMSpl8AspksZ75DOQXCh8oVFWrtxwi8kS+Nl1HB5A2UTyasoC+anV2VhCPEJgNIPKfIDnQy7y/uRxxv831sQ3yh2XJX/Ef9PT5BhGwowygJXi7m5ud0erRAkpQj2p+KbJc7q+Oc9z4IHjUn+WYtd/RRCm+XBFTVRp49+J/V1PuhEIHhVnXojYiwHbLKhSRgWW8FdzBKrarQi4QBmz/dr08Je4OUUnPfciYzVzQEb/8xFZjEBtqfihWcFhohpT4U54r1CbDZlrGKqzAP7PS/vxJps3ZnHzBH5SZEBn0v/K1gfn4c3iUK/hhcc9txRdGzDeeagRhgFl48M6qO5MD9tR4Ntn9i2dU1SEcLx29urioZleI5WC+1lLr53fYfPsZ1hUHZmwcARf5CEIZw6vuGlbCcMjQIQA3cgd5WEYfQov7dv09dH4/UvALFQjfur76jWripR8KRkubJqIG/InZgF5jQhMho7LZB4uEbiPbxQkeGIRIfNtXGe11ctr+R2UIruMABP3Cg9JhRs2/F0eMVbxDQPzOBPFVPEgloyAZBjXCM698zu9Ntm8Ypm3oKTAT7lNryZXcjSTnfIwkwIAWowMQkfCi96wc35DLGnVUsg6dUApIyc3F8sq7pwUxQi8byEV2HE89RgqdYZ/i713EjEIVG2Vwmgc1y1p51TSBfD2FjvQV+YxBh4G9FTOPpEz1gDWV0WYKrZtKWW2cxobZ6VlFtbzwrp4sWFS0Fj723bhwi8HLMXLuwauCKUzIgGtSJUS478tc70br6wQEQ96iZ4A4Kduo9qurvm6E5g1V40gepEyruPVCAhd5bEwnEEdJPNcBCqqYe/z86+yHqw9v/k4Q6p9jtOkg6sL+DD5fwJiS1GfsMXGqTyrl6LwwFP1P7Z61uzqqq0ibJ1g7uJQfY7OkaqvqZr1rYeWsqh8JywwdOreH31LhVjWr/ATQQ7fXsA6uPEz4z9sZz3q5UPvIuJ5xQPSwlfVjJtQll/AkAUJ09oLjDkcYJerprJtsFUf0WPRkmizehfo5MkfY5k23lAlx6wzjpil6AI1JWhqw6B18F8Y/9aCv6pJGMjVrFcoTg0QScFoLCkxJHukAyNJpe75zG/Yz4FF6vA9ulMYrNzJnpffVL335G9Iic/SoHheMk/D4bjiHw7p78a1OxCI4VHVo+UB08xPZSksr8ErR7nH2kNbw47gYgbdoOG5NGCkjyHMvQF/MPBbs8Rc32mxI30lhJGw55GUZHX/SHCmNn1NR8oj7z1FGjqjPH8UQKsclWGsDtX0cvO3vW4DJGa1Oq++RFUN4xDNNV8vU45ghCgRch7P+BWO7gB47XZur55tXSDDxtNZ6j7N0DlIMFEnXxnOHBNJarmkj8pCIFydpSXj1kLSQB11fwPhxx3GWeFfu2mmbIX5NIS9tda9ajx+Oz/wjcpZALLPlveFOFysrzfQ2hc+MS3V+cnXYOaHReslJGg1gM91Xsmkf+5PhILIaye6ave8e1vZldeFUE0St8nQZqw/EMog8hyBx1oKEja1JNTYigY/0ZnBj1RvwAmkI5N+hnLx34M7fcnsJ1MU2pmjr9LG2l3r06tyBOtixuIVUz1E4Tad8cQ8E5S2Di/W+VfDmq8dWcLUR6g28e+54nXKhG3GeerCShGiWLZwFNlv7jYP9p9wDe4UC5q912oX0+f2rrfFb03TUnK6jw5ssnZOiTQ5hltnIqTlHFS2wo3Ll3yJpT3JG0YCg09T/VwentN9oBblLJRnOODDbojXbK5hwMDkPbiBStYOOGJhQEex+k5CkHK29Jzd45SLpEynoptOQl+i2u/O56GGQIWMNPbUgcy8ul5gWIFhy1FiQPo9mFjXMLb6OI+HUkZdxYdzybBwuHTd2p2U8hxSq0/SCmOl6+hfp8u3rfIzBzIucB+73yWDfLBRPj1INcH61FhPjYoI+brrF4w2uLywNVgNGS8SCy3uujZy4Yr/CneJ1SbOQrNwpYHBF+YkBsfVt/9qDrrY4Am0f7lkzgw6xOoADLP9ZJniwEi6XeHwfzQroXv+OqDSVkDQm12n3yTy10aAMyqvMgcHw4hAwVuABO0No281YFT8cnJaTOd4mF02Q3bE8JBwX/Xfwf5JqzG5upjPJ5mjYQM5VFtfYIYP2VLIAxeio/1UpgSi3UBn9+Gb9Q93NRYrYn+ED0edPeE2cHAmIxdzyEUbSPf8OAQAuU9fxL2wsej89cyUaWQh8YGlH+nC32uUPUwZ8uNLWFYamXrfLmR5sUlU7rZflLx07ujdQ8xrNNDWzKGT8rkC/L/ofsjmmC3geq1eyf+5jc7pvZTC6lxKGT7dvW/6zma+fx6ODGrh8D0UX50ZCUqxA7jesHUDc6P9cH7rJymTWCMNpR2yNYepVpPGxrtrcuwCFI0aAjU2WetUK5VkrBwLhQ3ZkEFjq8aCFuXl/hoEjKyjeTXUR2mrQqQEOjUV7pXhfa1psidvh7sHZM5FU3dFIYj8uADCGKnjaRPeTFtTBInb3msOTrRu9t8DNMvtZmfGl9mMQIeh2NHyp2XrGyjic5qty52NN3hTtFMEis5Y/C1iCIrPTtkzpPnZMVZgFQXN//6t0XTgj//AaPnUFaQAy8ziYAQEve8e+HN0i82rfEXCt0Fmn31D6aBQ9v0tgucVctWNun1NAtYtOz39vv/0h2OVXJ0hgRl4P/Wsz06h4NdnX2jbp0oihLEwv4dEBgMmyAI7FztK29Dyyuks44aRiufcJ3SBeIorKNdWZMnolKQmLksutNau7H4lbHqlaVRsdvkQq6thirZGaLU0Y+ntjBbBAB7z8LlWlnds1IxzFacM+x/kfUshqJj8LLkkVE7qtvtlF79HKRoaad5OfVxnMPMbLwGMJUybBVGgUOAaBKwpBEs7+xuLXtt4yPNaUkLsQzmOO7jeOdG9OGpnXXntcQ418AjhcNXIBnAmKSUiYmMotBCPJhmKItjqBSiBAX+5yqq5VvalvBcijU88mB6upZrl2SMec3Z9xO91fhqdllmO3X1k+nhiHBJxGV1eCLKSdoa/Rqd/oCSJU0PEdtP8u2Fbi9taz+sOzPk6TtaYquZxmXO5Jt6FpRw7e688zx2ow7kwkLgablVTxtgwfsnR9jHRvoJEPLaRMvnLIAlvlKsVZIA/7Aewkax5oYBN2iSNfQKytk41D79TqOpbyrx1i6j78sCm32BSKKQIcjf6HINb64EwfIjltT0gxHPrVEe4arGGv1xPZjlLmmp6ZmJREo6uNDyi8vBg4QAWMdBNZNvlf28PKhqpzxxPHiSgSsOf0s9n84kpfa/Mqnn52RRONwHRPdnFB9rdyatmzGmamqTSZM+smLSifMRJkDMuwwA0nxlDlwfUmXoWFX+UzBp6splmG429c/TCRHJcy2OBTaSRl+sc03gCpY0trbU3oG+1sTbNCHAx4m1oPDWldqk5sV3wLMPcRdFbxa1jm2A3cp47ydVMhwhyyVppGa6p5mEOs5avA2b9ersqRYyDK1yrp92K+PXnsa7Gu0wsuezndzyHXP262o37i5Wa7vroM9vA8tcou9iQapVFvmaNLUKwmjhSd3BSCZ8qBvnC1NghGUFTZtQZ9WP7g3GGyTcOQbmz2FCk2jHkcf2CGtL7cxWT50JNAmeTFkStPoZIaP7iqSOIuwz6O7oejMyXcqzir8C+KW1I56hBLkOONLlxyWujzUdUeQi1JAZe+rdZF2cawLnQaG+QPM+C3N3gE2MuWs+zBJl73BmZ4k1mwm4Nf61jm+D6T7ENKS8CatuMLZjFFFlFaHFfiDpaVtnoWCblek1TMZofSJALYNBmSCY3EwbQvtBmTAkowUBnpCFS1rT1v0nyaFMpbQeV+/AXpRnB0pn8r4pv3EmpnhZH6zI0GiOS9BrfyBtLlpUnMqJkEp1nvqSoEi1ywXIag08lokAriN+zTL7jbpBihjVYBeHTu4OxiYgGUA8kRg0mf72sQd0cu8ZYNdV8+rniyaMYfdl8rp2fgTkfoQBpo5knr0hEDMxXFalTbFTvkEzIRaiH6dudt4JWN+ppYLCgVFoalsybbtJaiqPH2Gib3Nje0NhU0AO9SjVOsrl6GwPtmMTJIMD/8l/w425nUK1FibpKA4gDRErG4Bp5RolPuUm9aB35azEvZ1WAE7BorbG76YtwGPTc6N9AQWOsoQX40tTrkZLyZXs+FyrxrNjp0EJbfOXmHy2at4uhbqpQNwATyVuSWDGqSvAo6t4xFkSkS+y1v3bO7mCTNkRNIxwH5KgQHVmXNL8l/VsUpxmvj4ZKGYrWn5wPKAAKep6lmCoXg6kEM22dDYk+FcbfT4BumfP/qGzVP+B3QQMhEg8wG6lULM83voCPm2RZ6TeaYuaECNJ9ot0iOHQJHTaLYPlkGeO9vPiTiwLap3s5Qyej39CZ+gXKVnlh+HqKX8knJckuO5BT4c2V/BbHMYB5/q3c7PgtbFn/P3/xOZLRnpP/cAXSX8iIlu+jrwAfvLxQjLpdX5uXp86TmA1kHGOha1zxupUAhvJ58mrRnNSI6TQEMzjX3w57qAr5M/CflkArPJHBf8PQnW5/GnDIk0N6jK5q5tf+IwFvrx1Na4smLKq6EMXN3LXUYobY+wuGumLM5RDPJE8n/KVoTFH1fa8H+Sjyx4Vt+cPLhw1jxlB4GnmLvcwB+R4UJfa4MPiSRXTUcqynpZxqR3FU3kVZRfevDZOD2NAy69z/PT+Vmxd1b9frA/bwDTBWCz2iJ96mQbdSwlT8wnROU1697WkUvsnQiCwsgffH7xqNVpxMW6nu4QBg1rpVg78FVoVvYhVsc9xv9kxG5XNysh46AWfphMN1SSiN5BhsrKpZKBePJT2OLO+THHXz3c5tx5YOf5kR+Ma+u9B9h9VTkMWH2wV2hIbdOxUUCL1+I6qJaQjvpyNfxtzdXLovpDH3ra6czH0JHhJw50TuyEVkKoanC6DgbWT9lHimYkmvMtJosuiHxpvujf8hI1FZElop5IdT4BPUxzvXXF32BYSAk3lKJcgFC0A4qfymK87hauqMwi+3USKvzn9Aetq+sLRNUq8SGglc5pNcVAntvZIcq+xDQ26y3ULZFhKEN09uk1hyIW8Gqfzp3l+B03u58FAxDHWgiN/mXC9bfam7ExZmhkMl0iHS189djua8XnNFm4Hc7O1+0eeqPrzDkE6iDg63a2JG5ILFm5wKMLzZdMs1YvUmZ6PaYop3Bj/HnPJp5EDL952RPrUC/fzSAqaIEZU2ZQvyhOX1V/OFVlARHe6htS1Qm6KdCWFF6k2zGw/aFQsx4LjwuhU4m4x4zeiKrOjJqrznNQO+b1IYK0PI7PSmdyrvSzKmCYPHG9VRoyyxKU8zP1N3yk/5Xtu2vPZ7NEz6trEeDfYjPYcD0EKkpPgCDOLSsLxg+Z+ZMnq3IcZmTnB3fmkBe7k1SCfQ1stpCynLhHgduO8vJWlc8yX07jjrGY/IzffKwyS7hJ/Y04o9aIpX95dqGRsdeNZ0mSyfBa2gbyBJXRstudRoRPqCG8TLZBz+PQ2Kf8/HOH2JYixs0tPXKUHA8VppD9Zf2mxpHFfBJe/PZoJH2UtOw5qVzoCjWf/HxXHzXKjeIcirCIvXjnsUY6M2iZUOw+OSC2Q5XlMtzJsDW31QOszkf5gMXwj/t6DBv4RO/85AKDiqaAy1D4Lf9i2vF8qN/ZxrFV9iBEgWxWCN4WrbVLEchSHC9CzmfRDZVQ7uWvI2VxnQYBAZiXjSjOG9KiVIYHF3Onm1GtoF2uVYunt1NE/3p5uAjyiZAmcbtGqizvq6zFWBtQz1zmZFM85clh9ZPMmq4spWiMP1/h4tNbtUOu6vB/O5i/Hqn9jG6yQ9+2zJtaaS6rnSoY4qWnb3nwj2AF8WApdMOIj1Cj11vW4BeyytzzfyYCnB4q0VrWcMA7/lmKi4fKvycU3Gkpzh8ldBXFFokuPdEaGzMuqKvyKv1MnZ7U6odVRA+Ea880OIOJ4+hIZFWT1aAbV5XPkgUbmXxnVnCGq69WswLAp0JSKjk6dgV7d8Fi1wA5L8k1kIOjLoUo/VNqAri/YscHCYdDwiUAztH0U2Nox5KTz9CqdV/beQgzSc3iNz8eiYK0NZsLdrL8PBbpUB9kEpz1cpM2j9vzAdAI3ipMu3EXK2xCTC/5LtdZt0DjrbIFzMSOewS/pqu4qORB8/D8yOsmU4MWe0BIaGZLzhtNWZpc6mXZOHAjRtOdkIIjdS4GHwuaZCokQvudRUpvQ5QsZgqo40eD6abpFwz+eSVk5TnEkuxWD9c3Jbc+cNJK0iyXhh5tsTFQezz9T0nGT3mj6xm4IwVV8BbokQaW/uHuBeTKBxzBwfrrVBWSXcZSzX1ZdwUaX/6u/3MzcwQ2aFNoNxnZE3TS6FkReHIMcoi4MQgTOY/JHtBbkKn7CirUxQbkmXq3+U2yN3utGGeokK5oYE28dHwEgyc6z60HnvsFhz5cGx/Pl9Y57oQE32TAYhhOQf4XG+tyMuSNNfdCJV0ezzvS5H2rJ7ZBxVjiF91UXAAa8sJfby0B8Q6VZRa3ESHvC6r4bXKZh5xYHXUlv463EYvb4isfslvhJpeY46fkiy8LGC/YhOz25p9ChxXq5wBsd3/9pOzjpAbl+eL4u3IC8zsnv/k/77V/qdq2OjMyJnpyN3yv/Zb9nKdqmEiR7wIpeBT7w5t8eu3tQpbj6pZlm+GagOGYIMRU7vZPO/tWnDrrgLF+AXPZMNfpdS8CxqBQUyljqzTHOzD0hTCCc15u7ak077GjrmZZTylqwCwT07y+gZ4sLNnMQefHHUL2MfU+bUvgMPkMA1/5i3AbjzdFAYUtR+QIcB1KMwOJUZn4hoFtCcyshcS/sedmkRd8DB2HsajuZDu3W+NMong++amX5pxqTEbHuCq+rSAxc9A+XkLwsDd0qe8i39r4/gkJRbUK0Le5jpKWRr2zv1tut+ptgu18vaLFqm0GRbe8iQSRUiGRA3kmL7A5f/3+4XO4luS6ifrFlmLRnMh26iMUiiyWDCiNlqVXtrCkdu537bVG12hGhGpSj+CLyXugRb//Nx7AEwZKs4ShvYXjZUFx3W443bu1ibq4+RUIq2JHaJ/3ZrEITNOzRY4vQRCMSgsrwTlYnmeVerYcSxDHfP7+lYJCNP0hhK9NmIXbqDjU7Ei73bhzF0yQdIDuxnJznOR4mPYrv3Yh9MfFlNurotlE9ww6tUhZ83F3F8uZyBKZTmC8HorztgJz9Q68oukKRkPI+2qJcVwAMaYNqusDlz0JGNxzysH4YQTqWlx5eNtkz25IzAy4Wwd8OJWy2NAfbRkmVE82/6oaM1ClNPlca8x7G2PZfJ1yxpBYPmc76F6RzO1mkz+P0YARWoVNFhI3OMCEvAjERBRzK+hsNUwbLYvqh+GpGuUig3+pGmm+qXFmSlBsXo8xlvPbYARLZF92vn1p7x/NJ3ODc3CPL9mb4AkaA2xtObLSsbNuJvMhuEMzVbqGGo1Xuqj4k1u6RcjIcTwwHCsMBatzOxFFLMPCt5tSTWMFw5T0DrtTJvcWy7siv36sZn36GdLo7ZU+YtVd1rTFGkrhE0NIjipOlvidWEH0rHEAMRbKoF2HQhBUtsz3Ujsiga38N9oWmRfo6a/+rOIw+kr0L79q7ALVLQ7y09Y0MIrVp/qXxL5r3ZIigfLmFnui89p7vG6pKOJS968AdjOoQPYeVkWAMdTrj6zO/1b8Uz4M4tFec10/i5iRZCA5acLYiVrS4jlZb9WoCoflbi3EFLoaIV43vOcBa8vhWGhTpBFc6onBwbq9zHOH6GXE2Mc7DmJ5N8uirc9lQI3wm2jny14ThS4SpItMKhRQSLDXl0+16sHRItVHyrKg8RO3/3KeLmum/Ncoy1GQFUliTJh/2Ot/3ITAGq2W+vsv1VzdFJuuMtRuKQEm+YJ22yLzr1QGrBxlPiRjb4OAODI4LxyzGFPZj5E8iYkGm9YYgWig2+Be9lDqUBUGdMdlmVj9HTeWCz8wh8RGlNYIcfGx53Vzt57y3DSzdCPCZcN5+oc7k2rQGac8lSG8UOGhupRnkfyWDGHjvHCCucePHEaD6fVvq2nnNyLZF++keIQZRnbRM9YTMWlsCkszlNGhNcR3imRpYohQXEzaWR9PaRPda2r5uzSFaGRzL88BNX5r6fx7mWpuDdJnj7vwry8mCqnMA+ko56rAabq1UYTm5kDzG89NIMcvv0Vt/cZn9dJW3vafiYp9jiFjq5hZTLebAl8v3oi/tVArsQMpBMewwsER8qvrHOy48VLeNcsLgxaddhCn7qUd39qC0ZFP9jefFfEtWDW91/pXqB7VjQBINJN+znuxz8brTI+yej8pOKITE6wh95SY5QDX2pBqDt1yFU8pRKA+F19TX0jia2gam/+ItrzQtF8hucBWf9byq3qVzPRSn0Yj8dqXTUFxPIYCv4v4mcJp9a9ikr9cjlHHeJLSzze8two4YDr9b22pQIR2h+r9LR/9CkywQFIarZ813TKa7uctOL6XQlwTUY0QoUYtQw7JKYNlYh/5m9zCp6MiHCfDhpk3+5OSDB4EhMTjYaei8Ft723qjH78qDRrVmeCKsh3PjP0vFmIe0gfdFzBwoHjYkHwA81JQzQsPCr8/BCaGUK3eYSAaTP7COY6SjlYVRj3BrAdJ591t29oj76AimfQuclytODer07qditnbRzoXwRcDoxPHeoWQsMTZpYcROTCX8UU+EOGonKbq7hhkNb/r5eO8o68DA2imLmIw2+APzSs6Z7M7ZYU5pfKn57vjW9467DaUPZhaLCa2W/IOmBFGBMPHuBPkL1eO4FMcko1STF15JZAl9L6i3sdPUo5s9spWCxYfQ9V+tEQtGDR+3Bc4GlvUgCj1Uxu32l7C89kwsu/btVHQH8Az2+2VZuSluvYlmroau2+TU0lYn0Hd3P7XlTOPZoclBYVUr+yUKpiqsOZCBr83YwzJW6M02VPHNmEIxKhOXe5sfzpgadcRIDHLcgGJzNFfdyTq5Xihf1DtBArS31QTNQ+JUN7o3+ROdiBy4YQnqpHLKwsy8KEUPDr04bfBIraJ24LYHSHbvrCca6f2jtDAUEY2MGz6i0EmRAAMaeMm4X6rt+uvhPxXW94RazNKjTraMVWfhuSz96OgY8OepfjpmgQaRCXVuLuWLgKaFwZeDOGJDLMqx3ky8P/QbjyxMfoz96dadOrxMMafeDmlFoZyV/rZJY7cJE7ZvI0Yc8ZwbzrER3HQWUQiF+cIR5g+kg6PGD55fy4yB0qPwIdC2vFkQXJ0nKteSA4z4tQHuWqLFEc5D9nlJoFZLUKxZjojVQCSfZbZBI+8zheA4nAkn1vAW/1XtwGwR7nqcwxSDd6nqvc6CCTdD4GUFPCRfFzyO9usQPSgGQ7ev8/l4au80WMEExaFUe0e3ynVTvCLBVAAtSP90X3Kop0j8/fPu9VAhva+KK3IqF2uJYYbRX9XgTMQS5AR+hqxbF/5Au6QnLsztCtjIWXkDveO3/b+yDnBwDIBntUGGT2Jc3j1gN9K9zxzSKIkCgHsTa4MBhpenQbk6fwX4T3zvRrvNcuFQMZePNUoD/1PUePOfCpuCJPpjlxTi1zXdu4vVPH9xllzGQltD0a+IJCc/g2QVQOpRLOgCIEphSof3h2vFDznTe32WZpMg/cj0gKo5fVjfLceDpKSCnkS+NI1AL8m8OEv/xZFmSYrRzhgpj/IT1FPbzfshvQ5ARMWoC1XT0j6JMtAiiX76YAOheTC9jnwj/jXnpN+GA2wAc9Ba8oCPehu+D8bve7q7sZ1tZFBJ2kaoPeOYojBGdNUOcFknzITr5+ZzoVsAiDUb9zIr0ZoMSlfQS12an/i77tsUEhpkraC65eqE55z9C4eZ5JsQRg5cfLkO15hWo0xWeS5TzpLRT4LDIJPy4HTEiAF2iEiEksxmn+FiaiFO5uC9AoXPYoUg3b2JsQ8lnzzCI6EhTyHq/WsZISWqduMAsx9WN1qD8ZNqurwoAKfOtbdARxxKxvXsgYJ5lT0SqVSGQlzVL9TIK2INEBPXHgWIJ0TZLE+x0GkDhqnRjqywz9cIxDikZDk6uIf+ElDIZXWKdfltUiZgQA7zkf1+fcWI+4+y/otOJOgem7/PZRFG8Fp3qXeY8G1JroAL4LeS9Z3Jn3/GxnhgDB5RifDVogEW313mIo2mo1VmcKv8D3FH/+eq7uF4I3UXsi9O9Im3X/p7GCPpONu6SmmycbOGDdz28FOJnaxllKQv72rKs912bDYM/YIS+mI6ryUQR0HwzGZwLIxlGv9K99QzR/tqI+c0lSX5l4CBQ3e6P/EZaMJehyO07KaUr6zRJPXGmCQxFwD7+LL8MMJJftKSwnOJLXP6rvTb7DithgAaM10ePH68WfpFxghSMbxf3PAdwt74poaRO0wqEbWD74jkfa2KGv70h8Xv2wZ9cACezHJJGuf2f2w4Z1kXqyt2XvAbScKNKDT7EKiFTSW5vqpQRnmrX35PftYIS+Nx3Jw5FWrQsZ397oqfKVbz0uIg8OEJKVMHGs32W+Jl9l75O+YvzO/r5aNaH40Z5PwVIl87VnhVStXTaVISV0rGKlGLNFiaqGT/3ZnEvnIZOeUYAlkco0+m6B2aTyqq8it9G0yQ1ADEDppGnfvNH7N9Y7ZQSA2Y4sPKT9rNeLRgSUuoXUSrjw3K5OClzsHSsXC6ZsPmb2lhmTj1XifT/Nt8N+HPvkFU9ySr5lZdzLdlUMeUE/8s0ApcJmx9+cqFzcjjnCT+k+4FIZpn9qDRzIofapsOhiFeR0PoP+ApiyVBh1YTfPKAPYOh6e3xoVzNaVDoJZPPr91kE+KFUOC2OkNJsts8jh4MNZJAVGOX3bZ27Xsoh37d0rRkfT+A5oHmTLZGVunkyYYHwg/3D05H5oYH7ibR0IjouMF2znetmgpz/fZc0DCNeXc8V2icwRXfroBxSqtF5mZh5YHjy17fvxTyp1Xfbz6fd6pXWw5NdfnCXqO0+fzkyVpU2BMneayNRVRsn7VyLHwv08ohKksprlTngsavR8q9Kzej/W3NhzbjlGVboRet8E5k/6WxiA8ES+Tx1fiUSDFWYPApMOlH1Xd5mS1Lon9HuC1HYeSwCwC4v7UqB99X2KuzZewBt2SgL3QZTLv8lL6Q3cRU5ng9ZqMGSTY4itcr5xUu+RLlfjwe0bh4NOi3lms/mewv6n1Zh6UHi66f1eE0Njcys3L6VL+mtj/73m7lshxWZuVZk6uYamw3myyDiqZ/0oleJKdTH/t4L1FT3yGjp6Yrw7/7zQsi29btcXqyulmEi9SUJQiOlwVPyUsuInRLM0krodMF19VnJ82ChslbxcYCiUDrWFhmeIcmjeUrEpuPDicY3nQBmLAFnrLM5RftvDsyjEQgr1+pDYujwcMtifEtSACzKsN9up83aRJO8Ulf4vLK+DjjKbGxn4zm0WOeIY0NDX/cSLVNlB+LrC9Hqe8e9Mr2esuDgA/Ev1LrtsfPcjxzYDIq/0O59mk/nOZ42736cefKKsA9h6g+5EWXvyZ9KvUPnfyjpTVbBt2tNO4faUzfbCMQAku4L+ez3H10FgCgrDOtbvv0XZ1HFcHCcxVY4UOhfUzWmIPfvt3lGGb21rHSW7o9MtiHyAjMe4TStTDOiggPsqYfSpMrlX8X82LBUFocRq+i/4uISufpJVS/9wnmEKXXmi467vUQNnKFzmeOVA63TNXaNiIE/Z2GfcDcH52bnC6R7xowwFt0m0Z6N1gAHoV/LDxzo3Ruv8RkraLKrRqhNDbSZZldfmBQC4UakcgFuUoKGSu8rQt0xXjsv5Xr+EDkRLL2nivACr1cJwhqvuw4GKGmk8Q4N9pbxKUVXChVtsG/M71QmxMi5rcDDbwnROQXzbT9bI6K6xQNIkeqwa7QinKhj4N3TJY9MluDC4TIv5UofobZ+98riMvBbJ7zCtcUZPWVUgqhlEd9NgShxuPO2P46aMRX8015xbH4XUPWsstxyM6vykzeD1UHjeKsCMDySewPR6auW/w+bTIz4nlEc8f20Pc3m8AvIMOdi/b9N1zZHNuYZjm6OO5/kNH3v/GNL+5kAyjfI1lon507TcAPzbaDMeCzm75jPiy+wtjYoPqXJxF9pKgJsplOtN2pIQeZClP77p0Xxg2eqOIRGEtRaIpwamv+8MBJladDxLn6XZ/LbyC7WX6MCI7AhcGdhNtxhE4N1oa+ySux4sOsEYrmmxfYnt2gjyFILYdrowMnkJeC2TPmhDIAhsjq1ATxxeHM9S71QT3OWpSCFReeKnzM5c+uTamze2YCfoJbzaqxIeN3Juqb3B6sm4vddvJb5r7DMw67YrcqecXc8w1vGos5yk85h3zSRE4C5TaiTrAAD4L5KCy7U+twFohhpA+A0kGOyK0IJmGA1B3bGu4/r45nmQuT/HKhao7yFG1v99qCWUWuyzyzUFFsmjpw/RHR7EgIM6wRN7NYR3OB7mP3zFGjYHkWfO/Zp8Fsn1S98qnct8NdYQK1RbNErmKOeDaP9D5Jgy60cdhoakpKXqdZ2+TRYQSNox1hdHCasFCzxbGDJbPvwE+lQBEotRrbItBO9w300NPCSQGblJ7Yai7OKj7//6+MUFUhSqgJ3uPauDW4uDDgGMPFBHDQYwx9/44zop5/adVtg4/kzaOPYqgpReZgBnA7EP5R0gHYk54l53E2CPLwEtAJbe2v68/0TlsvBiERhJEdfO38VdGWB9HqjnHpbbvwb7WAEjzs7nSHuXaAtTxUAQFC0aXn+b4E3wVIUrBKvkk6A2ElV6VduhLG6gB1TFpF0lreACzrNmP/H5S9dMWAdMUYrytOQ+dGV64nXu46NAmTBp541KjkekXY1IjxAh3js+1eOzbDI6WGkRAAchNAaBlHhzYpQqZHiCPrp2HWmvFmEo3ajZYkDij/vgXExWdgeuDAj3EJTYxvQ2J23+PyX3cTaVmHGtWO4GImbbhAf/vJWb0BBvRKlBtIQXly85zXBhFwARXLS3FwRXPu7oYQ2KbxZnghL1Uus19vJnRHa39+0Fd5+ORSSBOWRQuNOqJojaYJaygGiX6VXIIYZcyAFus5BcgB+mJnYKgX5WeZTOHkxVnDEGYEM/9/HA/Syq4/bf0sjjOssrM61jFc6wDDjKr7jxu/wP7cTdj75Wk9/1uRUv0OxUgElslLbhttIVrLLvOhGbio9CfMPwMqK2khM1fye1FxM6lp2m4f+PuQ74PpVhq4+eRGpWLez4gcGnQxCmilktVNnnh+WG8qI9Y7epr7l2cg9WOidI4wWEp3nqEd56sf0a3um2UPUJRXEwAeDTfV2EcYbPlTG1DuBTEtt49GM4JV1Zvpy9ckagfHW+CLXgMNBbz4KEnoEkOlu4duJPeT8GXzXc+wrcG/XEBxYGDYP0PqYlncYh6AUaaMOBSUXDRwAfykkMnhyC2BLyAo+ongS7hWStZIboMl0EIHJPGTQO1pR9GJ1ae1F/B/7gfYiiEUyfRJnip6M7QKuqwVqhRr2VePLd4h+bnQ4u8qrLhj+kbJ3n1VNh0bznqVa6CwN/+neqorvmucIdd6etej+W8dmlLogY/LVBu5H3Qbty9hlLRXdYo8ooe1JoBGKxlaa4cGo5pVqBYZkmXX9xihZ8+DKyY395YgpLiEd/3hvs4GpE+lKKkyub/NvvcXhM4HT4NMpm7m1L9M0lSHcDnY6U/t1cf6uXLZpQm89sMJdtUlJJajxP45vNY4O+AlYGsT3hkU9HSZa1uwKNLQwvA4WKYjkxyCuR4zntx0a7xsXpzQ+oDQasMwOyqmloZ4bBWl0tOCNGSxJ4ygiaTV/xFBCF8LOSwqg2/WXjUF8SKir5RL0e3Vj9Lfe/Y2KqmINa78/Y6Qgf8xWrShCdZcEDksj0eGwCI04obSoNc9QFa6TKSGdzAlxFVJfY3OQ7RLXY2qNEx1Qu7ju+kTE6395olJUcHrCJ/Qy+2qGW0Yh7illucT4dhadsTNZugliN0MWc5zdmlxjqwjrDwlyJycm62B93UrVKCmcC4MEcQamzTD1tSLXPMXoyMtNjarvY2S9ZRlyn/IitV13jpYNqJx4taIXuZaMu9tOpbnqSfxahiKRmHWHI3Eb8Y3Z6c0kJd9RAeUhtI6Dl7/uoHDsZp6+AaTolIPkmlV38SLtApgSLgZLsSRSl1By6LG5KJM1z2jza6YcJ2D8sKXHJxbdl5WyqhEycXIG/Gfkhqva0IuyLwOm/0tAQQPF53qUtG6q+jbs3OBtDg2q2Hetx9rp5snvzF1CmUotjQB8Jg601RBb2KiJ2eKLgXJggtRMs+kVSewN7F4N1rlLRha2mzeAtuqGV711u/4wWEBv/SLc748Yy6TzhU0ZHXtxBjhvq+UDUwfjVaM+B3P2K4vb1cuP3U5aPn5wEHbjGxzNrzW2vE7c3k8cTgJ/OXwa1/Bk0bIcsNyulG5ZbwCA08E3uGybqSD7HbEh7OYJW/JdAuyn66uaawd8KaQl/qvmdtAvpA2fCudHuV5HbGOhF5u24STu2gsgEprvAJ3+xifT4h0ujtO5vmudfVXeRYIMQxQGnkQxTVB2HOnjswcujq9ehlVDHo84cg9QgN8oyPZriks1hS69NkdPLXgh/nz8AIZN3yeVQnpH98GkIw7cWn5d7s9qchRhB8FY4bWl+ieWyx4iJ2cRu0lKjbOCCnPM4/nxhsS98lsw002AWAAlAYZkPOshE7pcK8JtpABUBn4qEW52o2ge9k3qglMaUIeOdh3L9ZjnVpjxu/uNulvJQ1S6QRuvTvh3CZHgTNQNSxN+70VXzwyrstkCGSns3tAAG5s62OWRDhSLdF0g/1h8IPActFb4fk13BHvYxUWg+a4mLtsjO4gKZjNzi52XYe9Ow72E1JOjDnLy6Q8KbJ6emQz+2Z3zZhQkGTfXdigc0EZEAMFMR/hhyJROs2hODXu1mfK2OMbQfgFbTDSC4NuHSPFd1WO65elOdQpEQiyeWcHGrNNsJevz67m4mQzgkjyX1gPnBaeain0IhniK4/vXs3AiMbODKDEnGzspAVb+R/bv0Gm94gcg6Y274v8L535iUMRprKdhj5UPt0mZJMrx9P/BUfGZq7+X1vaSSU3pWi2QM8wK/T43VJxky3iRUaZPdHm/4hhEuLYn0wx11kmBwcuiuTBwGkAVBpM6W9Q5vL+JoJgVST9MT1Qq/1TeRhSJPUUnDf+z4DmWbuATjq3Y/1B5G1FPQDTTO/VGuXfkES/DeAx+EFJiUxaiw814u609iBIHYBIEjd4h3x3uBIRhnW9RKGtJwoQUSPkThSGKDMK9iKogLaIHEGwc8E/0bR5jSe9pX+i7/GACH6up4//WQpEnf6G2tEEPC1r0UoOvVYCVOfv9UbdMn2j02Seb2kheX4c20SfXASsL1Axs3fk9kVMBnLKq33xenZT1ETRCCFOfBjaqR0fT586NGMaOEUAGytsAdOpOWLX7B+t2/N+yz0po4yNly+aJQaSQ0o0Wfp4oMAAM3PWoGlQrt7g1arrz5mPBJMYt9H+o5zrJympduoG10dppduJ31gQLjuJyXN/Ss6nu8al94/BzvgGr0vZFJccwnRZ9yl+c/BbuBw4uuxD7lct8wA9VVQn3eT1KBxhrdR2LLHlXKS3a8dWvKgTrZ5iB68RIo3Edx2okFUGG8/FBg82sx16h8BQeWNCWie9s4OQ6IMKMPznvbQx9OUjUAGghDG4k5nhETB/f6KZFxe/49iUCM/xr2cyMbqFccRdvIeVa7uYS6ucJVXC4Dhe7oClwusD2rlc2OwdMkK6UyY0MxdyuVgwJBfZE+5b0JNET2yjcjRMbxnoVHdr7KgtsLK2lNVN0F8OkgxSUyy3vQ6rR1lOfpkM7jSXjNBc74NYJ5qVq0wVUxAtpXiJhXe6/FxjBu+fgnHzhDjeSzpOPDox+DjoejmLAkkkOPSWN7m8Nm+mX5MzAqiQBYzcdLo9gWbuRBdrddUGua0sZZgYWmh+11PWfFmwoacZ+VnxBWvPkTO2pNfAU5DKH7SiHVR1Ys/Hp2xP+8JW9ek5kXfnY5t7hQBpb6qydUUScG67MyCBBQlVaJrKbu6rqWpr/pbph34JBKWzm21u6rdt2KG5HbT2zwrMoPGC291Q8L7lB7i+Pgo05/4kAOWvwuA8+KcSmi3V0n9cc1GJuJbP4f/EE5FSbC66f4mg6+fQhwpMWDv+I/3IcrhDGT8jUB+qrIu9rLQh7FquYEME/kgHpMEHsdTdHjh0fDqRLsc84s8qkDegpjnxKjDINBuyxXSO/feE7fxFvFvzulY6Hpeh/J2hHzq5MZy0E/L1gNoRHevwauqq8nMatRxc5hxxvlXL9JvZ1OjcvDmkykSBNwSZ3VnoylXVr+mzIUI8L3OwPWrYH6rVNvDsn5ivWtOSXuHVal9Ba78U77WXSldQ92Afh2paYxKclzIkU2lzcAoRTijrVRWjK+z0JaO1w+tjfIvaILPtTljy+lt9ME/Z1QNqjHWlKAEIiLBf9kEQmD34P+HE+ruLBtmSJllCPdN+gYkIgqv6c8HY6Hg44NleLd8rVCm4kIV9NgRuHWwuoHr//r/Gkk=")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 67f0ffd..4fb15f7 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.19 +// Hprose for HTML5 v2.0.20 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -1097,7 +1097,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 21, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1143,7 +1143,7 @@ } function toPromise(obj) { - return (isPromise(obj) ? obj : value(obj)); + return (isFuture(obj) ? obj : value(obj)); } function delayed(duration, value) { @@ -1483,7 +1483,7 @@ this.reject(new TypeError('Self resolution')); return; } - if (isPromise(value)) { + if (isFuture(value)) { value.fill(this); return; } diff --git a/package.json b/package.json index 71bcb3a..c6beb69 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.19", + "version": "2.0.20", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 4560bd5..1fd0974 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.19 +// Hprose for HTML5 v2.0.20 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Future.js b/src/Future.js index 15d690d..9b2a5b3 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 21, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -59,7 +59,7 @@ } function toPromise(obj) { - return (isPromise(obj) ? obj : value(obj)); + return (isFuture(obj) ? obj : value(obj)); } function delayed(duration, value) { @@ -399,7 +399,7 @@ this.reject(new TypeError('Self resolution')); return; } - if (isPromise(value)) { + if (isFuture(value)) { value.fill(this); return; } From 00967fe7cb48d714dbf2752ab152bcd89fa5901b Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 23 Oct 2016 13:10:43 +0800 Subject: [PATCH 52/86] Improved BytesIO.js --- src/BytesIO.js | 68 ++++++++++++++++---------------------------------- 1 file changed, 22 insertions(+), 46 deletions(-) diff --git a/src/BytesIO.js b/src/BytesIO.js index c479772..939fd27 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -13,7 +13,7 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -98,21 +98,17 @@ if (off < len) { charCodes[i] = ((unit & 0x1F) << 6) | (bytes[off++] & 0x3F); + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 14: if (off + 1 < len) { charCodes[i] = ((unit & 0x0F) << 12) | ((bytes[off++] & 0x3F) << 6) | (bytes[off++] & 0x3F); + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 15: if (off + 2 < len) { var rune = (((unit & 0x07) << 18) | @@ -122,15 +118,11 @@ if (0 <= rune && rune <= 0xFFFFF) { charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); charCodes[i] = ((rune & 0x03FF) | 0xDC00); + break; } - else { - throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); - } - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); } - break; + throw new Error('Unfinished UTF-8 octet sequence'); default: throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); } @@ -163,21 +155,17 @@ if (off < len) { charCodes[i] = ((unit & 0x1F) << 6) | (bytes[off++] & 0x3F); + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 14: if (off + 1 < len) { charCodes[i] = ((unit & 0x0F) << 12) | ((bytes[off++] & 0x3F) << 6) | (bytes[off++] & 0x3F); + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 15: if (off + 2 < len) { var rune = (((unit & 0x07) << 18) | @@ -187,15 +175,11 @@ if (0 <= rune && rune <= 0xFFFFF) { charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); charCodes[i] = ((rune & 0x03FF) | 0xDC00); + break; } - else { - throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); - } - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); } - break; + throw new Error('Unfinished UTF-8 octet sequence'); default: throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); } @@ -242,19 +226,15 @@ case 13: if (off < len) { off++; + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 14: if (off + 1 < len) { off += 2; + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 15: if (off + 2 < len) { var rune = (((unit & 0x07) << 18) | @@ -263,15 +243,11 @@ (bytes[off++] & 0x3F)) - 0x10000; if (0 <= rune && rune <= 0xFFFFF) { i++; + break; } - else { - throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); - } + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); default: throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); } From 0b6ac3af528d4203bd5cb351ecac61b9bfc7c352 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 23 Oct 2016 13:11:03 +0800 Subject: [PATCH 53/86] Improved for Weixin App --- bower.json | 2 +- dist/hprose-html5.js | 8 ++--- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 76 ++++++++++++++-------------------------- package.json | 2 +- src/CopyRight.js | 2 +- src/HttpClient.js | 6 ++-- 7 files changed, 39 insertions(+), 59 deletions(-) diff --git a/bower.json b/bower.json index 4755152..cbb95d3 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.20", + "version": "2.0.21", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 424dd02..31a3b5e 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.20 +// Hprose for HTML5 v2.0.21 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return n(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function M(e,t,r){e?R(e,t,r):t.resolve(r)}function x(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();M(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();x(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?M(e,n,this._value):this._state===F?x(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(!(i>10&1023|55296,r[n]=1023&s|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(!(o>10&1023|55296,n[i]=1023&u|56320;break;default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(!(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0 -},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return M(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return M(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return M(this)}},readBytes:{value:function(){return x(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=Xe.length;r=0;r--)e=Xe[r].inputFilter(e,t);return e}function _(e,t){return e=p(e,t),ut(e,t).then(function(e){if(!t.oneway)return T(e,t)})}function O(e,t){return pt.sendAndReceive(e,t)}function S(e,t,r,n){st(e,t).then(r,function(i){B(e,t,r,n)||n(i)})}function j(){var e=Fe.length;if(e>1){var t=We+1;t>=e&&(t=0,Ge++),We=t,Ne=Fe[We]}else Ge++;Ve(pt)}function B(t,r,n,i){if(r.failswitch&&j(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){S(t,r,n,i)},o):S(t,r,n,i),!0}return!1}function A(e){var t={retry:qe,retried:0,idempotent:!0,failswitch:!0,timeout:ze,client:pt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),C(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?tt.reject(r):tt.resolve(e)};S(g,t,r,tt.reject)}function E(e,t){return function(){return Ze?U(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return U(e,t,r,!1)})}}function k(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Ye?h.promise(function(i,o){Je.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?D(e,t,r):L(e,t,r)}function U(e,t,r,n){return P(t,r,M(e,t,r,n),n)}function N(e,t,r,n){try{r.onerror?r.onerror(e,t):Ke(e,t),n(t)}catch(e){n(e)}}function F(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){S(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();I(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function W(e){return function(){e&&(Ye=!1,a(function(e){e.forEach(function(e){"settings"in e?Q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Je),Je=[])}}function L(e,t,r){r.sync&&(Ye=!0);var n=h.promise(function(n,i){ot(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){N(e,t,r,i)})});return n.whenComplete(W(r.sync)),n}function D(e,t,r){return h.promise(function(n,i){et.push({args:t,name:e,context:r,resolve:n,reject:i})})}function z(e){var t={timeout:ze,retry:qe,retried:0,idempotent:He,failswitch:Qe,oneway:!1,sync:!1,client:pt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function q(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){S(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();I(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function H(){Ze=!0}function Q(e){if(e=e||{},Ze=!1,Ye)return h.promise(function(t,r){Je.push({batch:!0,settings:e,resolve:t,reject:r})});var t=et.length;if(0===t)return h.value([]);var r=z(e);r.sync&&(Ye=!0);var n=et;et=[];var i=h.promise(function(e,t){at(n,r).then(function(t){t.forEach(function(e){if(e.error)N(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&N(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(W(r.sync)),i}function G(){return Ke}function Y(e){typeof e===m&&(Ke=e)}function J(){return Ve}function $(e){typeof e===m&&(Ve=e)}function K(){return Ne}function V(){return Fe}function X(e){if(typeof e===y)Fe=[e];else{if(!Array.isArray(e))return;Fe=e.slice(0),Fe.sort(function(){return Math.random()-.5})}We=0,Ne=Fe[We]}function Z(){return Qe}function ee(e){Qe=!!e}function te(){return Ge}function re(){return ze}function ne(e){ze="number"==typeof e?0|e:0}function ie(){return qe}function oe(e){qe="number"==typeof e?0|e:0}function ae(){return He}function se(e){He=!!e}function ue(e){it=!!e}function ce(){return it}function fe(){return Le}function le(e){Le=!!e}function he(){return De}function pe(e){De=!!e}function ve(){return $e}function ge(e){$e=!!e}function de(){return 0===Xe.length?null:1===Xe.length?Xe[0]:Xe.slice()}function ye(e){Xe.length=0,Array.isArray(e)?e.forEach(function(e){we(e)}):we(e)}function we(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Xe.push(e)}function me(e){var t=Xe.indexOf(e);return t!==-1&&(Xe.splice(t,1),!0)}function be(){return Xe}function Te(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=pt;return n&&(i={}),e||Ne?(e&&(Ne=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(C(i,r),tt.resolve(i),i):(a(A,i),tt)):new Error("You should set server uri first!")}function _e(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ae(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete rt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===nt){if(rt[e]){var i=rt[e];for(r in i)Be(i,r,n)}}else nt.then(function(t){Ae(e,t,n)});else h.isPromise(r)?r.then(function(t){Ae(e,t,n)}):Be(rt[e],r,n);v(rt[e])&&delete rt[e]}function Ee(e){return!!rt[e]}function ke(){var e=[];for(var t in rt)e.push(t);return e}function Ce(){return nt}function Ie(){return null===nt&&(nt=U(pt,"#",[],!1)),nt}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},F)}function Me(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},q)}function xe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){ht.push(e),ut=ht.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},O)}function Ue(e){return Re(e),pt}var Ne,Fe=[],We=-1,Le=!1,De=!1,ze=3e4,qe=10,He=!1,Qe=!1,Ge=0,Ye=!1,Je=[],$e=!1,Ke=r,Ve=r,Xe=[],Ze=!1,et=[],tt=new h,rt=Object.create(null),nt=null,it=!0,ot=F,at=q,st=_,ut=O,ct=[],ft=[],lt=[],ht=[],pt=this;Ie.sync=!0,Ie.idempotent=!0,Ie.failswitch=!0;var vt=Object.create(null,{begin:{value:H},end:{value:Q},use:{value:function(e){return Me(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return xe(e),gt}}}),dt=Object.create(null,{use:{value:function(e){return Pe(e),dt}}});Object.defineProperties(this,{"#":{value:Ie},onerror:{get:G,set:Y},onfailswitch:{get:J,set:$},uri:{get:K},uriList:{get:V,set:X},id:{get:Ce},failswitch:{get:Z,set:ee},failround:{get:te},timeout:{get:re,set:ne},retry:{get:ie,set:oe},idempotent:{get:ae,set:se},keepAlive:{get:ce,set:ue},byref:{get:fe,set:le},simple:{get:he,set:pe},useHarmonyMap:{get:ve,set:ge},filter:{get:de,set:ye},addFilter:{value:we},removeFilter:{value:me},filters:{get:be},useService:{value:Te},invoke:{value:_e},ready:{value:Oe},subscribe:{value:je},unsubscribe:{value:Ae},isSubscribed:{value:Ee},subscribedList:{value:ke},use:{value:Ue},batch:{value:vt},beforeFilter:{value:gt},afterFilter:{value:dt}}),o&&typeof o===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(pt[e]=o[e])}),n&&(X(n),Te(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new XMLHttpRequest;o.open("POST",O.uri,!0),l&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in b)o.setRequestHeader(a,b[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=T),o.onprogress=_,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:b,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function v(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?p(t,r):h(t,r);return r.oneway&&i.resolve(),i}function g(e){"function"==typeof e&&(T=e)}function d(){return T}function y(e){"function"==typeof e&&(_=e)}function w(){return _}function m(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?b[e]=t:delete b[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var b=Object.create(null),T=r,_=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:g},onRequestProgress:{get:d,set:g},onResponseProgress:{get:w,set:y},setHeader:{value:m},sendAndReceive:{value:v}})}function i(e){var t=h(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme."); -}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=!f&&"withCredentials"in new XMLHttpRequest,h=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file +!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return n(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function x(e,t,r){e?R(e,t,r):t.resolve(r)}function M(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();x(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?x(e,n,this._value):this._state===F?M(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e) +}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return x(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return x(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return x(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=Xe.length;r=0;r--)e=Xe[r].inputFilter(e,t);return e}function _(e,t){return e=p(e,t),ut(e,t).then(function(e){if(!t.oneway)return T(e,t)})}function O(e,t){return pt.sendAndReceive(e,t)}function S(e,t,r,n){st(e,t).then(r,function(i){B(e,t,r,n)||n(i)})}function j(){var e=Fe.length;if(e>1){var t=We+1;t>=e&&(t=0,Ge++),We=t,Ne=Fe[We]}else Ge++;Ve(pt)}function B(t,r,n,i){if(r.failswitch&&j(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){S(t,r,n,i)},o):S(t,r,n,i),!0}return!1}function A(e){var t={retry:qe,retried:0,idempotent:!0,failswitch:!0,timeout:ze,client:pt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),C(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?tt.reject(r):tt.resolve(e)};S(g,t,r,tt.reject)}function E(e,t){return function(){return Ze?U(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return U(e,t,r,!1)})}}function k(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Ye?h.promise(function(i,o){Je.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?D(e,t,r):L(e,t,r)}function U(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function N(e,t,r,n){try{r.onerror?r.onerror(e,t):Ke(e,t),n(t)}catch(e){n(e)}}function F(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){S(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();I(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function W(e){return function(){e&&(Ye=!1,a(function(e){e.forEach(function(e){"settings"in e?Q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Je),Je=[])}}function L(e,t,r){r.sync&&(Ye=!0);var n=h.promise(function(n,i){ot(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){N(e,t,r,i)})});return n.whenComplete(W(r.sync)),n}function D(e,t,r){return h.promise(function(n,i){et.push({args:t,name:e,context:r,resolve:n,reject:i})})}function z(e){var t={timeout:ze,retry:qe,retried:0,idempotent:He,failswitch:Qe,oneway:!1,sync:!1,client:pt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function q(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){S(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();I(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function H(){Ze=!0}function Q(e){if(e=e||{},Ze=!1,Ye)return h.promise(function(t,r){Je.push({batch:!0,settings:e,resolve:t,reject:r})});var t=et.length;if(0===t)return h.value([]);var r=z(e);r.sync&&(Ye=!0);var n=et;et=[];var i=h.promise(function(e,t){at(n,r).then(function(t){t.forEach(function(e){if(e.error)N(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&N(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(W(r.sync)),i}function G(){return Ke}function Y(e){typeof e===m&&(Ke=e)}function J(){return Ve}function $(e){typeof e===m&&(Ve=e)}function K(){return Ne}function V(){return Fe}function X(e){if(typeof e===y)Fe=[e];else{if(!Array.isArray(e))return;Fe=e.slice(0),Fe.sort(function(){return Math.random()-.5})}We=0,Ne=Fe[We]}function Z(){return Qe}function ee(e){Qe=!!e}function te(){return Ge}function re(){return ze}function ne(e){ze="number"==typeof e?0|e:0}function ie(){return qe}function oe(e){qe="number"==typeof e?0|e:0}function ae(){return He}function se(e){He=!!e}function ue(e){it=!!e}function ce(){return it}function fe(){return Le}function le(e){Le=!!e}function he(){return De}function pe(e){De=!!e}function ve(){return $e}function ge(e){$e=!!e}function de(){return 0===Xe.length?null:1===Xe.length?Xe[0]:Xe.slice()}function ye(e){Xe.length=0,Array.isArray(e)?e.forEach(function(e){we(e)}):we(e)}function we(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Xe.push(e)}function me(e){var t=Xe.indexOf(e);return t!==-1&&(Xe.splice(t,1),!0)}function be(){return Xe}function Te(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=pt;return n&&(i={}),e||Ne?(e&&(Ne=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(C(i,r),tt.resolve(i),i):(a(A,i),tt)):new Error("You should set server uri first!")}function _e(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ae(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete rt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===nt){if(rt[e]){var i=rt[e];for(r in i)Be(i,r,n)}}else nt.then(function(t){Ae(e,t,n)});else h.isPromise(r)?r.then(function(t){Ae(e,t,n)}):Be(rt[e],r,n);v(rt[e])&&delete rt[e]}function Ee(e){return!!rt[e]}function ke(){var e=[];for(var t in rt)e.push(t);return e}function Ce(){return nt}function Ie(){return null===nt&&(nt=U(pt,"#",[],!1)),nt}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},F)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},q)}function Me(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){ht.push(e),ut=ht.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},O)}function Ue(e){return Re(e),pt}var Ne,Fe=[],We=-1,Le=!1,De=!1,ze=3e4,qe=10,He=!1,Qe=!1,Ge=0,Ye=!1,Je=[],$e=!1,Ke=r,Ve=r,Xe=[],Ze=!1,et=[],tt=new h,rt=Object.create(null),nt=null,it=!0,ot=F,at=q,st=_,ut=O,ct=[],ft=[],lt=[],ht=[],pt=this;Ie.sync=!0,Ie.idempotent=!0,Ie.failswitch=!0;var vt=Object.create(null,{begin:{value:H},end:{value:Q},use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Me(e),gt}}}),dt=Object.create(null,{use:{value:function(e){return Pe(e),dt}}});Object.defineProperties(this,{"#":{value:Ie},onerror:{get:G,set:Y},onfailswitch:{get:J,set:$},uri:{get:K},uriList:{get:V,set:X},id:{get:Ce},failswitch:{get:Z,set:ee},failround:{get:te},timeout:{get:re,set:ne},retry:{get:ie,set:oe},idempotent:{get:ae,set:se},keepAlive:{get:ce,set:ue},byref:{get:fe,set:le},simple:{get:he,set:pe},useHarmonyMap:{get:ve,set:ge},filter:{get:de,set:ye},addFilter:{value:we},removeFilter:{value:me},filters:{get:be},useService:{value:Te},invoke:{value:_e},ready:{value:Oe},subscribe:{value:je},unsubscribe:{value:Ae},isSubscribed:{value:Ee},subscribedList:{value:ke},use:{value:Ue},batch:{value:vt},beforeFilter:{value:gt},afterFilter:{value:dt}}),o&&typeof o===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(pt[e]=o[e])}),n&&(X(n),Te(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",S.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=O,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:S.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:S.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function d(e){"function"==typeof e&&(_=e)}function y(){return _}function w(e){"function"==typeof e&&(O=e)}function m(){return O}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,O=r,S=this;Object.defineProperties(this,{onprogress:{get:y,set:d},onRequestProgress:{get:y,set:d},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme."); +}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 1954d6c..d19d751 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 4fb15f7..6bc71f0 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.20 +// Hprose for HTML5 v2.0.21 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -1796,7 +1796,7 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1881,21 +1881,17 @@ if (off < len) { charCodes[i] = ((unit & 0x1F) << 6) | (bytes[off++] & 0x3F); + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 14: if (off + 1 < len) { charCodes[i] = ((unit & 0x0F) << 12) | ((bytes[off++] & 0x3F) << 6) | (bytes[off++] & 0x3F); + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 15: if (off + 2 < len) { var rune = (((unit & 0x07) << 18) | @@ -1905,15 +1901,11 @@ if (0 <= rune && rune <= 0xFFFFF) { charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); charCodes[i] = ((rune & 0x03FF) | 0xDC00); + break; } - else { - throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); - } + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); default: throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); } @@ -1946,21 +1938,17 @@ if (off < len) { charCodes[i] = ((unit & 0x1F) << 6) | (bytes[off++] & 0x3F); + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 14: if (off + 1 < len) { charCodes[i] = ((unit & 0x0F) << 12) | ((bytes[off++] & 0x3F) << 6) | (bytes[off++] & 0x3F); + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 15: if (off + 2 < len) { var rune = (((unit & 0x07) << 18) | @@ -1970,15 +1958,11 @@ if (0 <= rune && rune <= 0xFFFFF) { charCodes[i++] = (((rune >> 10) & 0x03FF) | 0xD800); charCodes[i] = ((rune & 0x03FF) | 0xDC00); + break; } - else { - throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); - } - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); } - break; + throw new Error('Unfinished UTF-8 octet sequence'); default: throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); } @@ -2025,19 +2009,15 @@ case 13: if (off < len) { off++; + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 14: if (off + 1 < len) { off += 2; + break; } - else { - throw new Error('Unfinished UTF-8 octet sequence'); - } - break; + throw new Error('Unfinished UTF-8 octet sequence'); case 15: if (off + 2 < len) { var rune = (((unit & 0x07) << 18) | @@ -2046,15 +2026,11 @@ (bytes[off++] & 0x3F)) - 0x10000; if (0 <= rune && rune <= 0xFFFFF) { i++; + break; } - else { - throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); - } - } - else { - throw new Error('Unfinished UTF-8 octet sequence'); + throw new Error('Character outside valid Unicode range: 0x' + rune.toString(16)); } - break; + throw new Error('Unfinished UTF-8 octet sequence'); default: throw new Error('Bad UTF-8 encoding 0x' + unit.toString(16)); } @@ -5137,7 +5113,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5150,7 +5126,9 @@ var BytesIO = global.hprose.BytesIO; var TimeoutError = global.TimeoutError; var localfile = (global.location !== undefined && global.location.protocol === 'file:'); - var corsSupport = (!localfile && 'withCredentials' in new XMLHttpRequest()); + var XMLHttpRequest = global.XMLHttpRequest; + var nativeXHR = (typeof(XMLHttpRequest) !== 'undefined'); + var corsSupport = (!localfile && nativeXHR && 'withCredentials' in new XMLHttpRequest()); var parseuri = global.hprose.parseuri; function noop(){} diff --git a/package.json b/package.json index c6beb69..05f7803 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.20", + "version": "2.0.21", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 1fd0974..2b0561b 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.20 +// Hprose for HTML5 v2.0.21 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/HttpClient.js b/src/HttpClient.js index 0c04f27..5be350d 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,7 +12,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Oct 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -25,7 +25,9 @@ var BytesIO = global.hprose.BytesIO; var TimeoutError = global.TimeoutError; var localfile = (global.location !== undefined && global.location.protocol === 'file:'); - var corsSupport = (!localfile && 'withCredentials' in new XMLHttpRequest()); + var XMLHttpRequest = global.XMLHttpRequest; + var nativeXHR = (typeof(XMLHttpRequest) !== 'undefined'); + var corsSupport = (!localfile && nativeXHR && 'withCredentials' in new XMLHttpRequest()); var parseuri = global.hprose.parseuri; function noop(){} From 974a6dc1eeab11f701fb07daeccac4f4995c176a Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 14 Nov 2016 10:49:37 +0800 Subject: [PATCH 54/86] Improved retry. --- bower.json | 2 +- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 31 ++++++++++++++++--------------- package.json | 2 +- src/Client.js | 29 +++++++++++++++-------------- src/CopyRight.js | 2 +- 7 files changed, 37 insertions(+), 35 deletions(-) diff --git a/bower.json b/bower.json index cbb95d3..e755752 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.21", + "version": "2.0.22", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 31a3b5e..cef224b 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.21 +// Hprose for HTML5 v2.0.22 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 !function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return n(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function x(e,t,r){e?R(e,t,r):t.resolve(r)}function M(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();x(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?x(e,n,this._value):this._state===F?M(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e) -}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return x(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return x(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return x(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(n,i,o){function p(e,t){for(var r=0,n=Xe.length;r=0;r--)e=Xe[r].inputFilter(e,t);return e}function _(e,t){return e=p(e,t),ut(e,t).then(function(e){if(!t.oneway)return T(e,t)})}function O(e,t){return pt.sendAndReceive(e,t)}function S(e,t,r,n){st(e,t).then(r,function(i){B(e,t,r,n)||n(i)})}function j(){var e=Fe.length;if(e>1){var t=We+1;t>=e&&(t=0,Ge++),We=t,Ne=Fe[We]}else Ge++;Ve(pt)}function B(t,r,n,i){if(r.failswitch&&j(),r.idempotent&&r.retried5e3&&(o=5e3),o>0?e.setTimeout(function(){S(t,r,n,i)},o):S(t,r,n,i),!0}return!1}function A(e){var t={retry:qe,retried:0,idempotent:!0,failswitch:!0,timeout:ze,client:pt,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),C(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?tt.reject(r):tt.resolve(e)};S(g,t,r,tt.reject)}function E(e,t){return function(){return Ze?U(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return U(e,t,r,!1)})}}function k(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Ye?h.promise(function(i,o){Je.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?D(e,t,r):L(e,t,r)}function U(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function N(e,t,r,n){try{r.onerror?r.onerror(e,t):Ke(e,t),n(t)}catch(e){n(e)}}function F(e,t,r){var n=M(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){S(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();I(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function W(e){return function(){e&&(Ye=!1,a(function(e){e.forEach(function(e){"settings"in e?Q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Je),Je=[])}}function L(e,t,r){r.sync&&(Ye=!0);var n=h.promise(function(n,i){ot(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){N(e,t,r,i)})});return n.whenComplete(W(r.sync)),n}function D(e,t,r){return h.promise(function(n,i){et.push({args:t,name:e,context:r,resolve:n,reject:i})})}function z(e){var t={timeout:ze,retry:qe,retried:0,idempotent:He,failswitch:Qe,oneway:!1,sync:!1,client:pt,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function q(e,t){var r=e.reduce(function(e,t){return e.write(M(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){S(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();I(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function H(){Ze=!0}function Q(e){if(e=e||{},Ze=!1,Ye)return h.promise(function(t,r){Je.push({batch:!0,settings:e,resolve:t,reject:r})});var t=et.length;if(0===t)return h.value([]);var r=z(e);r.sync&&(Ye=!0);var n=et;et=[];var i=h.promise(function(e,t){at(n,r).then(function(t){t.forEach(function(e){if(e.error)N(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&N(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(W(r.sync)),i}function G(){return Ke}function Y(e){typeof e===m&&(Ke=e)}function J(){return Ve}function $(e){typeof e===m&&(Ve=e)}function K(){return Ne}function V(){return Fe}function X(e){if(typeof e===y)Fe=[e];else{if(!Array.isArray(e))return;Fe=e.slice(0),Fe.sort(function(){return Math.random()-.5})}We=0,Ne=Fe[We]}function Z(){return Qe}function ee(e){Qe=!!e}function te(){return Ge}function re(){return ze}function ne(e){ze="number"==typeof e?0|e:0}function ie(){return qe}function oe(e){qe="number"==typeof e?0|e:0}function ae(){return He}function se(e){He=!!e}function ue(e){it=!!e}function ce(){return it}function fe(){return Le}function le(e){Le=!!e}function he(){return De}function pe(e){De=!!e}function ve(){return $e}function ge(e){$e=!!e}function de(){return 0===Xe.length?null:1===Xe.length?Xe[0]:Xe.slice()}function ye(e){Xe.length=0,Array.isArray(e)?e.forEach(function(e){we(e)}):we(e)}function we(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Xe.push(e)}function me(e){var t=Xe.indexOf(e);return t!==-1&&(Xe.splice(t,1),!0)}function be(){return Xe}function Te(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=pt;return n&&(i={}),e||Ne?(e&&(Ne=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(C(i,r),tt.resolve(i),i):(a(A,i),tt)):new Error("You should set server uri first!")}function _e(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ae(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete rt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===nt){if(rt[e]){var i=rt[e];for(r in i)Be(i,r,n)}}else nt.then(function(t){Ae(e,t,n)});else h.isPromise(r)?r.then(function(t){Ae(e,t,n)}):Be(rt[e],r,n);v(rt[e])&&delete rt[e]}function Ee(e){return!!rt[e]}function ke(){var e=[];for(var t in rt)e.push(t);return e}function Ce(){return nt}function Ie(){return null===nt&&(nt=U(pt,"#",[],!1)),nt}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},F)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},q)}function Me(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){ht.push(e),ut=ht.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},O)}function Ue(e){return Re(e),pt}var Ne,Fe=[],We=-1,Le=!1,De=!1,ze=3e4,qe=10,He=!1,Qe=!1,Ge=0,Ye=!1,Je=[],$e=!1,Ke=r,Ve=r,Xe=[],Ze=!1,et=[],tt=new h,rt=Object.create(null),nt=null,it=!0,ot=F,at=q,st=_,ut=O,ct=[],ft=[],lt=[],ht=[],pt=this;Ie.sync=!0,Ie.idempotent=!0,Ie.failswitch=!0;var vt=Object.create(null,{begin:{value:H},end:{value:Q},use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Me(e),gt}}}),dt=Object.create(null,{use:{value:function(e){return Pe(e),dt}}});Object.defineProperties(this,{"#":{value:Ie},onerror:{get:G,set:Y},onfailswitch:{get:J,set:$},uri:{get:K},uriList:{get:V,set:X},id:{get:Ce},failswitch:{get:Z,set:ee},failround:{get:te},timeout:{get:re,set:ne},retry:{get:ie,set:oe},idempotent:{get:ae,set:se},keepAlive:{get:ce,set:ue},byref:{get:fe,set:le},simple:{get:he,set:pe},useHarmonyMap:{get:ve,set:ge},filter:{get:de,set:ye},addFilter:{value:we},removeFilter:{value:me},filters:{get:be},useService:{value:Te},invoke:{value:_e},ready:{value:Oe},subscribe:{value:je},unsubscribe:{value:Ae},isSubscribed:{value:Ee},subscribedList:{value:ke},use:{value:Ue},batch:{value:vt},beforeFilter:{value:gt},afterFilter:{value:dt}}),o&&typeof o===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in o&&(pt[e]=o[e])}),n&&(X(n),Te(i))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",S.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=O,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:S.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:S.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function d(e){"function"==typeof e&&(_=e)}function y(){return _}function w(e){"function"==typeof e&&(O=e)}function m(){return O}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,O=r,S=this;Object.defineProperties(this,{onprogress:{get:y,set:d},onRequestProgress:{get:y,set:d},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme."); +}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return x(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return x(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return x(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=j(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function S(){var e=Ne.length;if(e>1){var t=Fe+1;t>=e&&(t=0,Qe++),Fe=t,Ue=Ne[Fe]}else Qe++;Ke(ht)}function j(e,t){if(t.failswitch&&S(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function B(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(g,t,r,et.reject)}function A(e,t){return function(){return Xe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Ge?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(Ge=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function W(e,t,r){r.sync&&(Ge=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Ge)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Ge=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return $e}function G(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Ne}function V(e){if(typeof e===y)Ne=[e];else{if(!Array.isArray(e))return;Ne=e.slice(0),Ne.sort(function(){return Math.random()-.5})}Fe=0,Ue=Ne[Fe]}function X(){return He}function Z(e){He=!!e}function ee(){return Qe}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return We}function fe(e){We=!!e}function le(){return Le}function he(e){Le=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function de(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(B,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)je(i,r,n)}}else rt.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(tt[e],r,n);v(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Ee(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=P(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Me(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){return Ie(e),ht}var Ue,Ne=[],Fe=-1,We=!1,Le=!1,De=3e4,ze=10,qe=!1,He=!1,Qe=0,Ge=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=N,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Me(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},isSubscribed:{value:Ae},subscribedList:{value:Ee},use:{value:Pe},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",S.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=O,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:S.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:S.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function d(e){"function"==typeof e&&(_=e)}function y(){return _}function w(e){"function"==typeof e&&(O=e)}function m(){return O}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,O=r,S=this;Object.defineProperties(this,{onprogress:{get:y,set:d},onRequestProgress:{get:y,set:d},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme."); }function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index d19d751..b3dec42 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 6bc71f0..dde1c54 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.21 +// Hprose for HTML5 v2.0.22 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -3902,7 +3902,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Oct 12, 2016 * + * LastModified: Nov 14, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -3991,15 +3991,17 @@ } function afterFilterHandler(request, context) { - return self.sendAndReceive(request, context); + return self.sendAndReceive(request, context).catchError(function(e) { + var response = retry(request, context); + if (response !== null) { + return response; + } + throw e; + }); } function sendAndReceive(request, context, onsuccess, onerror) { - _beforeFilterHandler(request, context) - .then(onsuccess, function(e) { - if (retry(request, context, onsuccess, onerror)) { return; } - onerror(e); - }); + _beforeFilterHandler(request, context).then(onsuccess, onerror); } function failswitch() { @@ -4019,7 +4021,7 @@ _onfailswitch(self); } - function retry(data, context, onsuccess, onerror) { + function retry(data, context) { if (context.failswitch) { failswitch(); } @@ -4032,16 +4034,15 @@ interval = 5000; } if (interval > 0) { - global.setTimeout(function() { - sendAndReceive(data, context, onsuccess, onerror); - }, interval); + return Future.delayed(interval, function() { + return afterFilterHandler(data, context); + }); } else { - sendAndReceive(data, context, onsuccess, onerror); + return afterFilterHandler(data, context); } - return true; } - return false; + return null; } function initService(stub) { diff --git a/package.json b/package.json index 05f7803..de3489c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.21", + "version": "2.0.22", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/Client.js b/src/Client.js index 4e4a6a7..1d7369b 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Oct 12, 2016 * + * LastModified: Nov 14, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -101,15 +101,17 @@ } function afterFilterHandler(request, context) { - return self.sendAndReceive(request, context); + return self.sendAndReceive(request, context).catchError(function(e) { + var response = retry(request, context); + if (response !== null) { + return response; + } + throw e; + }); } function sendAndReceive(request, context, onsuccess, onerror) { - _beforeFilterHandler(request, context) - .then(onsuccess, function(e) { - if (retry(request, context, onsuccess, onerror)) { return; } - onerror(e); - }); + _beforeFilterHandler(request, context).then(onsuccess, onerror); } function failswitch() { @@ -129,7 +131,7 @@ _onfailswitch(self); } - function retry(data, context, onsuccess, onerror) { + function retry(data, context) { if (context.failswitch) { failswitch(); } @@ -142,16 +144,15 @@ interval = 5000; } if (interval > 0) { - global.setTimeout(function() { - sendAndReceive(data, context, onsuccess, onerror); - }, interval); + return Future.delayed(interval, function() { + return afterFilterHandler(data, context); + }); } else { - sendAndReceive(data, context, onsuccess, onerror); + return afterFilterHandler(data, context); } - return true; } - return false; + return null; } function initService(stub) { diff --git a/src/CopyRight.js b/src/CopyRight.js index 2b0561b..2de4c29 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.21 +// Hprose for HTML5 v2.0.22 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From 607a87d3b30e983eb5ec3ce006470f07298bcfe3 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 15 Nov 2016 13:19:34 +0800 Subject: [PATCH 55/86] Fixed isPromise --- bower.json | 2 +- dist/hprose-html5.js | 8 ++++---- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 4 ++-- package.json | 2 +- src/CopyRight.js | 2 +- src/Future.js | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/bower.json b/bower.json index e755752..84b6045 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.22", + "version": "2.0.23", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index cef224b..6059c4a 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.22 +// Hprose for HTML5 v2.0.23 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(t){return n(t)||W&&t instanceof e.Promise&&typeof("function"===t.then)}function o(e){return n(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function x(e,t,r){e?R(e,t,r):t.resolve(r)}function M(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();x(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?x(e,n,this._value):this._state===F?M(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e) -}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull);switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return x(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return x(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return x(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=j(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function S(){var e=Ne.length;if(e>1){var t=Fe+1;t>=e&&(t=0,Qe++),Fe=t,Ue=Ne[Fe]}else Qe++;Ke(ht)}function j(e,t){if(t.failswitch&&S(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function B(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(g,t,r,et.reject)}function A(e,t){return function(){return Xe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Ge?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(Ge=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function W(e,t,r){r.sync&&(Ge=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Ge)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Ge=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return $e}function G(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Ne}function V(e){if(typeof e===y)Ne=[e];else{if(!Array.isArray(e))return;Ne=e.slice(0),Ne.sort(function(){return Math.random()-.5})}Fe=0,Ue=Ne[Fe]}function X(){return He}function Z(e){He=!!e}function ee(){return Qe}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return We}function fe(e){We=!!e}function le(){return Le}function he(e){Le=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function de(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(B,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)je(i,r,n)}}else rt.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(tt[e],r,n);v(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Ee(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=P(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Me(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){return Ie(e),ht}var Ue,Ne=[],Fe=-1,We=!1,Le=!1,De=3e4,ze=10,qe=!1,He=!1,Qe=0,Ge=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=N,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Me(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},isSubscribed:{value:Ae},subscribedList:{value:Ee},use:{value:Pe},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",S.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=O,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:S.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:S.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function d(e){"function"==typeof e&&(_=e)}function y(){return _}function w(e){"function"==typeof e&&(O=e)}function m(){return O}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,O=r,S=this;Object.defineProperties(this,{onprogress:{get:y,set:d},onRequestProgress:{get:y,set:d},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme."); -}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file +!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e){return n(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function x(e,t,r){e?R(e,t,r):t.resolve(r)}function M(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();x(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?x(e,n,this._value):this._state===F?M(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull); +switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return x(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return x(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return x(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=j(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function S(){var e=Ne.length;if(e>1){var t=Fe+1;t>=e&&(t=0,Qe++),Fe=t,Ue=Ne[Fe]}else Qe++;Ke(ht)}function j(e,t){if(t.failswitch&&S(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function B(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(g,t,r,et.reject)}function A(e,t){return function(){return Xe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Ge?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(Ge=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function W(e,t,r){r.sync&&(Ge=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Ge)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Ge=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return $e}function G(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Ne}function V(e){if(typeof e===y)Ne=[e];else{if(!Array.isArray(e))return;Ne=e.slice(0),Ne.sort(function(){return Math.random()-.5})}Fe=0,Ue=Ne[Fe]}function X(){return He}function Z(e){He=!!e}function ee(){return Qe}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return We}function fe(e){We=!!e}function le(){return Le}function he(e){Le=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function de(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(B,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)je(i,r,n)}}else rt.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(tt[e],r,n);v(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Ee(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=P(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Me(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){return Ie(e),ht}var Ue,Ne=[],Fe=-1,We=!1,Le=!1,De=3e4,ze=10,qe=!1,He=!1,Qe=0,Ge=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=N,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Me(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},isSubscribed:{value:Ae},subscribedList:{value:Ee},use:{value:Pe},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",S.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=O,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:S.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:S.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function d(e){"function"==typeof e&&(_=e)}function y(){return _}function w(e){"function"==typeof e&&(O=e)}function m(){return O}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,O=r,S=this;Object.defineProperties(this,{onprogress:{get:y,set:d},onRequestProgress:{get:y,set:d},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{ +if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index b3dec42..a79a7d5 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index dde1c54..5908aa8 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.22 +// Hprose for HTML5 v2.0.23 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -1139,7 +1139,7 @@ } function isPromise(obj) { - return isFuture(obj) || (hasPromise && (obj instanceof global.Promise) && (typeof (obj.then === 'function'))); + return 'function' == typeof obj.then; } function toPromise(obj) { diff --git a/package.json b/package.json index de3489c..8875767 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.22", + "version": "2.0.23", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 2de4c29..288e23d 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.22 +// Hprose for HTML5 v2.0.23 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Future.js b/src/Future.js index 9b2a5b3..2977c3c 100644 --- a/src/Future.js +++ b/src/Future.js @@ -55,7 +55,7 @@ } function isPromise(obj) { - return isFuture(obj) || (hasPromise && (obj instanceof global.Promise) && (typeof (obj.then === 'function'))); + return 'function' == typeof obj.then; } function toPromise(obj) { From ce3c35fa0b22fc4c433e66204c758f7a5ffcde94 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 15 Nov 2016 13:21:29 +0800 Subject: [PATCH 56/86] Fixed isPromise --- dist/hprose-html5.src.js | 2 +- src/Future.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 5908aa8..0d56c98 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1139,7 +1139,7 @@ } function isPromise(obj) { - return 'function' == typeof obj.then; + return 'function' === typeof obj.then; } function toPromise(obj) { diff --git a/src/Future.js b/src/Future.js index 2977c3c..85a4d29 100644 --- a/src/Future.js +++ b/src/Future.js @@ -55,7 +55,7 @@ } function isPromise(obj) { - return 'function' == typeof obj.then; + return 'function' === typeof obj.then; } function toPromise(obj) { From 6f2b8f4a0e8d14530b699bf370f791ef78577e0f Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 17 Nov 2016 20:42:12 +0800 Subject: [PATCH 57/86] Added thunkify, promisify, co --- bower.json | 2 +- dist/hprose-html5.js | 8 +- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 184 +++++++++- gulpfile.js | 3 +- package.json | 2 +- src/CopyRight.js | 2 +- src/Future.js | 182 +++++++++- utils/regenerator-runtime.js | 669 +++++++++++++++++++++++++++++++++++ 9 files changed, 1030 insertions(+), 24 deletions(-) create mode 100644 utils/regenerator-runtime.js diff --git a/bower.json b/bower.json index 84b6045..27a094e 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.23", + "version": "2.0.24", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 6059c4a..21d6d17 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.23 +// Hprose for HTML5 v2.0.24 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&L(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e){return n(e)?e:u(e)}function a(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return D(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function s(e){var t=new r;return t.reject(e),t}function u(e){var t=new r;return t.resolve(e),t}function c(e){try{var t=e();return u(t)}catch(e){return s(e)}}function f(e){var t=new r;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){o(e).then(function(e){i[t]=e,0===--n&&a.resolve(i)},a.reject)}),a})}function p(){return h(arguments)}function v(e){return e=i(e)?e:u(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){o(e).fill(t)}),t})}function g(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new r;return Array.forEach(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--n&&a.reject(i)})}),a})}function d(e){return e=i(e)?e:u(e),e.then(function(e){var t=e.length,n=l(e),i=new Array(t);if(0===n)return u(i);var a=new r;return Array.forEach(e,function(e,t){var r=o(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&a.resolve(i)})}),a})}function y(e){var r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e,t){return function(){return h(arguments).then(function(r){return e.apply(t,r)})}}function b(e,t,r){return h(e).then(function(e){return e.forEach(t,r)})}function T(e,t,r){return h(e).then(function(e){return e.every(t,r)})}function _(e,t,r){return h(e).then(function(e){return e.some(t,r)})}function O(e,t,r){return h(e).then(function(e){return e.filter(t,r)})}function S(e,t,r){return h(e).then(function(e){return e.map(t,r)})}function j(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function B(e,t,r){return arguments.length>2?h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function A(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.indexOf(t,r)})})}function E(e,r,n){return h(e).then(function(e){return i(r)||(r=u(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function k(e,t,r){return h(e).then(function(e){return i(t)||(t=u(t)),t.then(function(t){return e.includes(t,r)})})}function C(e,t,r){return h(e).then(function(e){return e.find(t,r)})}function I(e,t,r){return h(e).then(function(e){return e.findIndex(t,r)})}function R(e,t,r){L(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function x(e,t,r){e?R(e,t,r):t.resolve(r)}function M(e,t,r){e?R(e,t,r):t.reject(r)}function P(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==U}}})}var U=0,N=1,F=2,W="Promise"in e,L=e.setImmediate,D=e.setTimeout,z=e.clearTimeout,q=e.TimeoutError;Object.defineProperties(r,{delayed:{value:a},error:{value:s},sync:{value:c},value:{value:u},all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s},promise:{value:f},isFuture:{value:n},isPromise:{value:i},toPromise:{value:o},join:{value:p},any:{value:g},settle:{value:d},attempt:{value:y},run:{value:w},wrap:{value:m},forEach:{value:b},every:{value:T},some:{value:_},filter:{value:O},map:{value:S},reduce:{value:j},reduceRight:{value:B},indexOf:{value:A},lastIndexOf:{value:E},includes:{value:k},find:{value:C},findIndex:{value:I}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:U,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===U){this._state=N,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();x(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===U){this._state=F,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();M(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===N?x(e,n,this._value):this._state===F?M(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){L(function(){throw e})})}},inspect:{value:function(){switch(this._state){case U:return{state:"pending"};case N:return{state:"fulfilled",value:this._value};case F:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=D(function(){n.reject(t||new q("timeout"))},e);return this.whenComplete(function(){z(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){D(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?j(this,e,t):j(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?B(this,e,t):B(this,e)}},indexOf:{value:function(e,t){return A(this,e,t)}},lastIndexOf:{value:function(e,t){return E(this,e,t)}},includes:{value:function(e,t){return k(this,e,t)}},find:{value:function(e,t){return C(this,e,t)}},findIndex:{value:function(e,t){return I(this,e,t)}}}),e.hprose.Future=r,e.hprose.Completer=P,e.hprose.resolved=u,e.hprose.rejected=s,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},W||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:h},race:{value:v},resolve:{value:u},reject:{value:s}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(j.TagNull); -switch(n.constructor){case Function:return void i.writeByte(j.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(j.TagEmpty);case 1:return i.writeByte(j.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case O:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void y(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(j.TagLong):r.writeByte(j.TagInteger),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(j.TagNaN):isFinite(t)?(r.writeByte(j.TagDouble),r.writeAsciiString(""+t),r.writeByte(j.TagSemicolon)):(r.writeByte(j.TagInfinity),r.writeByte(t>0?j.TagPos:j.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?j.TagTrue:j.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c)),r.writeByte(j.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))):(r.writeByte(j.TagDate),r.writeAsciiString(n+i+o),r.writeByte(j.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(j.TagPoint),r.writeAsciiString(c))),r.writeByte(j.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(j.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(j.TagPoint),r.writeAsciiString(a)),r.writeByte(j.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(j.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.write(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(j.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(j.TagQuote),r.writeString(t)):r.writeByte(j.TagQuote),r.writeByte(j.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(j.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(j.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(j.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(j.TagOpenbrace),r.writeByte(j.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(j.TagObject),o.writeAsciiString(""+i),o.writeByte(j.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(j.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=y(i,r,0,"."),null===t&&(t=y(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return O(t);case ee.TagDouble:return j(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return A(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return x(e);case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagGuid:return W(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?Q(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(F(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function O(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return O(e);default:r(t)}}function j(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return j(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return A(e);default:r(t)}}function A(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function E(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function x(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return x(e);case ee.TagRef:return K(e);default:r(t)}}function P(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function N(e){var t=U(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return P(e);case ee.TagString:return N(e);case ee.TagRef:return K(e);default:r(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function L(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return W(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return E(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return x(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return L(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?G(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=j(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function S(){var e=Ne.length;if(e>1){var t=Fe+1;t>=e&&(t=0,Qe++),Fe=t,Ue=Ne[Fe]}else Qe++;Ke(ht)}function j(e,t){if(t.failswitch&&S(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function B(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(g,t,r,et.reject)}function A(e,t){return function(){return Xe?P(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return P(e,t,r,!1)})}}function E(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==y&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function M(e,t,r,n){return Ge?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?L(e,t,r):W(e,t,r)}function P(e,t,r,n){return M(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function N(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function F(e){return function(){e&&(Ge=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):M(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function W(e,t,r){r.sync&&(Ge=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(F(r.sync)),n}function L(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var d=f.readList();C(d,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Ge)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Ge=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(F(r.sync)),i}function Q(){return $e}function G(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Ne}function V(e){if(typeof e===y)Ne=[e];else{if(!Array.isArray(e))return;Ne=e.slice(0),Ne.sort(function(){return Math.random()-.5})}Fe=0,Ue=Ne[Fe]}function X(){return He}function Z(e){He=!!e}function ee(){return Qe}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return We}function fe(e){We=!!e}function le(){return Le}function he(e){Le=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function de(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===d&&(n=r,r=!1),r||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===y||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(B,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==y)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Be(e,r,n){if(typeof e!==y)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)je(i,r,n)}}else rt.then(function(t){Be(e,t,n)});else h.isPromise(r)?r.then(function(t){Be(e,t,n)}):je(tt[e],r,n);v(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Ee(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=P(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},N)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Me(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Pe(e){return Ie(e),ht}var Ue,Ne=[],Fe=-1,We=!1,Le=!1,De=3e4,ze=10,qe=!1,He=!1,Qe=0,Ge=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=N,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Me(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:Q,set:G},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Se},unsubscribe:{value:Be},isSubscribed:{value:Ae},subscribedList:{value:Ee},use:{value:Pe},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var d="boolean",y="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",S.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=O,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:S.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:S.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function d(e){"function"==typeof e&&(_=e)}function y(){return _}function w(e){"function"==typeof e&&(O=e)}function m(){return O}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,O=r,S=this;Object.defineProperties(this,{onprogress:{get:y,set:d},onRequestProgress:{get:y,set:d},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{ -if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?S.send(n):n.buffer.slice?S.send(n.buffer.slice(0,n.length)):S.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){h(o[0],o[1])})}0!==b||j.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,S=null}function d(){O=new u,S=new l(j.uri),S.binaryType="arraybuffer",S.onopen=p,S.onmessage=v,S.onerror=r,S.onclose=g}function y(e,t){null!==S&&S.readyState!==l.CLOSING&&S.readyState!==l.CLOSED||d();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,O.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==S&&(S.onopen=r,S.onmessage=r,S.onclose=r,S.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],O=null,S=null,j=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new v;return m?(null!==_&&_.uri===y.uri||(_=new o(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new a(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:d}})}function u(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,d=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")); \ No newline at end of file +!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&Q(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return Y(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function a(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return s(t)}catch(e){return a(e)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return Array.forEach(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){j(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function h(){return l(arguments)}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){j(e).fill(t)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){j(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){var r=j(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var t=function(){return this}(),r=Array.slice(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function d(e,t){var r=Array.slice(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e){return"function"==typeof e.next&&"function"==typeof e.throw}function m(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||w(t.prototype))}function b(e){var t=function(){return this}(),n=new r;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))}),n}function T(e){return function(){var t=Array.slice(arguments,0),n=this,i=new r;t.push(function(){n=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(n,t)})}}}function _(e){return function(){var t=Array.slice(arguments,0),n=new r;t.push(function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))});try{e.apply(this,t)}catch(e){n.reject(e)}return n}}function j(e){return e?i(e)?e:m(e)||w(e)?O(e):"function"==typeof e?b(e):s(e):s(e)}function O(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function n(t){try{i(e.throw(t))}catch(e){return s.reject(e)}}function i(e){e.done?s.resolve(e.value):j(e.value).then(t,n)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var s=new r;return e&&"function"==typeof e.next?(t(),s):s.resolve(e)}function E(e,t){return function(){return t=t||this,l(arguments).then(function(r){var n=e.apply(t,r);return m(n)?O.call(t,n):n})}}function S(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.forEach(t,r)})}function B(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.every(t,r)})}function A(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.some(t,r)})}function k(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.filter(t,r)})}function C(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.map(t,r)})}function I(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function x(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function R(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function P(e,r,n){return l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function M(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function U(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.find(t,r)})}function L(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.findIndex(t,r)})}function N(e,t,r){Q(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function F(e,t,r){e?N(e,t,r):t.resolve(r)}function W(e,t,r){e?N(e,t,r):t.reject(r)}function D(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==z}}})}var z=0,q=1,H=2,G="Promise"in e,Q=e.setImmediate,Y=e.setTimeout,J=e.clearTimeout,$=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:a},sync:{value:u},value:{value:s},all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a},promise:{value:c},isFuture:{value:n},isPromise:{value:i},toPromise:{value:j},join:{value:h},any:{value:v},settle:{value:g},attempt:{value:y},run:{value:d},thunkify:{value:T},promisify:{value:_},co:{value:O},wrap:{value:E},forEach:{value:S},every:{value:B},some:{value:A},filter:{value:k},map:{value:C},reduce:{value:I},reduceRight:{value:x},indexOf:{value:R},lastIndexOf:{value:P},includes:{value:M},find:{value:U},findIndex:{value:L}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:z,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===z){this._state=q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();F(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===z){this._state=H,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();W(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===q?F(e,n,this._value):this._state===H?W(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){Q(function(){throw e})})}},inspect:{value:function(){switch(this._state){case z:return{state:"pending"};case q:return{state:"fulfilled",value:this._value};case H:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=Y(function(){n.reject(t||new $("timeout"))},e);return this.whenComplete(function(){J(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){Y(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?I(this,e,t):I(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?x(this,e,t):x(this,e)}},indexOf:{value:function(e,t){return R(this,e,t)}},lastIndexOf:{value:function(e,t){return P(this,e,t)}},includes:{value:function(e,t){return M(this,e,t)}},find:{value:function(e,t){return U(this,e,t)}},findIndex:{value:function(e,t){return L(this,e,t)}}}),e.hprose.Future=r,e.hprose.thunkify=T,e.hprose.promisify=_,e.hprose.co=O,e.hprose.co.wrap=e.hprose.wrap=E,e.hprose.Completer=D,e.hprose.resolved=s,e.hprose.rejected=a,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},G||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]; +}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=S.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&S.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(E.TagNull);switch(n.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case j:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case O:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void d(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=d(i,r,0,"."),null===t&&(t=d(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return j(t);case ee.TagDouble:return E(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return B(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return R(e);case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagGuid:return F(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?G(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(N(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function j(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return j(e);default:r(t)}}function E(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return E(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return B(e);default:r(t)}}function B(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function R(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function P(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return R(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function L(e){var t=U(e);return e.refer.set(t),t}function N(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagRef:return K(e);default:r(t)}}function F(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function W(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return F(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return O(this.stream)}},readDouble:{value:function(){return S(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return R(this)}},readBytes:{value:function(){return P(this)}},readStringWithoutTag:{value:function(){return L(this)}},readString:{value:function(){return N(this)}},readGuidWithoutTag:{value:function(){return F(this)}},readGuid:{value:function(){return W(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function E(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(g,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var y=f.readList();C(y,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===d)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===y&&(n=r,r=!1),r||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)Ee(i,r,n)}}else rt.then(function(t){Se(e,t,n)});else h.isPromise(r)?r.then(function(t){Se(e,t,n)}):Ee(tt[e],r,n);v(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Pe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Se},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var y="boolean",d="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")), +function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=j,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,j=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){h(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new u,O=new l(E.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=r,O.onclose=g}function d(e,t){null!==O&&O.readyState!==l.CLOSING&&O.readyState!==l.CLOSED||y();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,j.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=r,O.onmessage=r,O.onclose=r,O.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],j=null,O=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?(null!==_&&_.uri===d.uri||(_=new o(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new a(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:y}})}function u(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,y=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),s=new h(i||[]);return a._invoke=c(e,r,s),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(e){this.arg=e}function u(e){function t(n,i,o,a){var u=r(e[n],e,i);if("throw"!==u.type){var c=u.arg,f=c.value;return f instanceof s?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(u.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var s=n.delegate;if(s){if("return"===o||"throw"===o&&s.iterator[o]===g){n.delegate=null;var u=s.iterator.return;if(u){var c=r(u,s.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(s.iterator[o],s.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[s.resultName]=f.value,n.next=s.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:j;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index a79a7d5..ba37be2 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 0d56c98..3e1109b 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.23 +// Hprose for HTML5 v2.0.24 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -1097,7 +1097,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Oct 21, 2016 * + * LastModified: Nov 17, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1142,10 +1142,6 @@ return 'function' === typeof obj.then; } - function toPromise(obj) { - return (isFuture(obj) ? obj : value(obj)); - } - function delayed(duration, value) { var computation = (typeof value === 'function') ? value : @@ -1276,9 +1272,10 @@ } function attempt(handler/*, arg1, arg2, ... */) { + var thisArg = (function() { return this; })(); var args = Array.slice(arguments, 1); return all(args).then(function(args) { - return handler.apply(undefined, args); + return handler.apply(thisArg, args); }); } @@ -1289,39 +1286,200 @@ }); } + function isGenerator(obj) { + return 'function' == typeof obj.next && 'function' == typeof obj['throw']; + } + + function isGeneratorFunction(obj) { + if (!obj) { + return false; + } + var constructor = obj.constructor; + if (!constructor) { + return false; + } + if ('GeneratorFunction' === constructor.name || + 'GeneratorFunction' === constructor.displayName) { + return true; + } + return isGenerator(constructor.prototype); + } + + function thunkToPromise(fn) { + var thisArg = (function() { return this; })(); + var future = new Future(); + fn.call(thisArg, function(err, res) { + if (arguments.length < 2) { + if (err instanceof Error) { + return future.reject(err); + } + return future.resolve(err); + } + if (err) { + return future.reject(err); + } + if (arguments.length > 2) { + res = Array.slice(arguments, 1); + } + future.resolve(res); + }); + return future; + } + + function thunkify(fn) { + return function() { + var args = Array.slice(arguments, 0); + var thisArg = this; + var results = new Future(); + args.push(function() { + thisArg = this; + results.resolve(arguments); + }); + try { + fn.apply(this, args); + } + catch (err) { + results.resolve([err]); + } + return function(done) { + results.then(function(results) { + done.apply(thisArg, results); + }); + }; + }; + } + + function promisify(fn) { + return function() { + var args = Array.slice(arguments, 0); + var results = new Future(); + args.push(function(err, res) { + if (arguments.length < 2) { + if (err instanceof Error) { + return results.reject(err); + } + return results.resolve(err); + } + if (err) { + return results.reject(err); + } + if (arguments.length > 2) { + res = Array.slice(arguments, 1); + } + results.resolve(res); + }); + try { + fn.apply(this, args); + } + catch (err) { + results.reject(err); + } + return results; + }; + } + + function toPromise(obj) { + if (!obj) { + return value(obj); + } + if (isPromise(obj)) { + return obj; + } + if (isGeneratorFunction(obj) || isGenerator(obj)) { + return co(obj); + } + if ('function' == typeof obj) { + return thunkToPromise(obj); + } + return value(obj); + } + + function co(gen) { + var thisArg = (function() { return this; })(); + if (typeof gen === 'function') { + var args = Array.slice(arguments, 1); + gen = gen.apply(thisArg, args); + } + var future = new Future(); + + function onFulfilled(res) { + try { + next(gen.next(res)); + } + catch (e) { + future.reject(e); + } + } + + function onRejected(err) { + try { + next(gen['throw'](err)); + } + catch (e) { + return future.reject(e); + } + } + + function next(ret) { + if (ret.done) { + future.resolve(ret.value); + } + else { + toPromise(ret.value).then(onFulfilled, onRejected); + } + } + + if (!gen || typeof gen.next !== 'function') { + return future.resolve(gen); + } + onFulfilled(); + + return future; + } + function wrap(handler, thisArg) { return function() { + thisArg = thisArg || this; return all(arguments).then(function(args) { - return handler.apply(thisArg, args); + var result = handler.apply(thisArg, args); + if (isGeneratorFunction(result)) { + return co.call(thisArg, result); + } + return result; }); }; } function forEach(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.forEach(callback, thisArg); }); } function every(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.every(callback, thisArg); }); } function some(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.some(callback, thisArg); }); } function filter(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.filter(callback, thisArg); }); } function map(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.map(callback, thisArg); }); @@ -1396,12 +1554,14 @@ } function find(array, predicate, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.find(predicate, thisArg); }); } function findIndex(array, predicate, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.findIndex(predicate, thisArg); }); @@ -1428,6 +1588,9 @@ settle: { value: settle }, attempt: { value: attempt }, run: { value: run }, + thunkify: { value: thunkify }, + promisify: { value: promisify }, + co: { value: co }, wrap: { value: wrap }, // for array forEach: { value: forEach }, @@ -1735,6 +1898,11 @@ global.hprose.Future = Future; + global.hprose.thunkify = thunkify; + global.hprose.promisify = promisify; + global.hprose.co = co; + global.hprose.co.wrap = global.hprose.wrap = wrap; + function Completer() { var future = new Future(); Object.defineProperties(this, { diff --git a/gulpfile.js b/gulpfile.js index fdef897..765e741 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -41,7 +41,8 @@ gulp.task('concat', ['clear'], function() { }); gulp.task('uglify', ['concat'], function() { - return gulp.src(['dist/hprose-html5.src.js']) + return gulp.src(['dist/hprose-html5.src.js', + 'utils/regenerator-runtime.js']) .pipe(concat('hprose-html5.js')) .pipe(uglify()) .pipe(gulp.dest('dist')); diff --git a/package.json b/package.json index 8875767..ff2e64f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.23", + "version": "2.0.24", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 288e23d..a31b6b4 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.23 +// Hprose for HTML5 v2.0.24 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Future.js b/src/Future.js index 85a4d29..21b187a 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Oct 21, 2016 * + * LastModified: Nov 17, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -58,10 +58,6 @@ return 'function' === typeof obj.then; } - function toPromise(obj) { - return (isFuture(obj) ? obj : value(obj)); - } - function delayed(duration, value) { var computation = (typeof value === 'function') ? value : @@ -192,9 +188,10 @@ } function attempt(handler/*, arg1, arg2, ... */) { + var thisArg = (function() { return this; })(); var args = Array.slice(arguments, 1); return all(args).then(function(args) { - return handler.apply(undefined, args); + return handler.apply(thisArg, args); }); } @@ -205,39 +202,200 @@ }); } + function isGenerator(obj) { + return 'function' == typeof obj.next && 'function' == typeof obj['throw']; + } + + function isGeneratorFunction(obj) { + if (!obj) { + return false; + } + var constructor = obj.constructor; + if (!constructor) { + return false; + } + if ('GeneratorFunction' === constructor.name || + 'GeneratorFunction' === constructor.displayName) { + return true; + } + return isGenerator(constructor.prototype); + } + + function thunkToPromise(fn) { + var thisArg = (function() { return this; })(); + var future = new Future(); + fn.call(thisArg, function(err, res) { + if (arguments.length < 2) { + if (err instanceof Error) { + return future.reject(err); + } + return future.resolve(err); + } + if (err) { + return future.reject(err); + } + if (arguments.length > 2) { + res = Array.slice(arguments, 1); + } + future.resolve(res); + }); + return future; + } + + function thunkify(fn) { + return function() { + var args = Array.slice(arguments, 0); + var thisArg = this; + var results = new Future(); + args.push(function() { + thisArg = this; + results.resolve(arguments); + }); + try { + fn.apply(this, args); + } + catch (err) { + results.resolve([err]); + } + return function(done) { + results.then(function(results) { + done.apply(thisArg, results); + }); + }; + }; + } + + function promisify(fn) { + return function() { + var args = Array.slice(arguments, 0); + var results = new Future(); + args.push(function(err, res) { + if (arguments.length < 2) { + if (err instanceof Error) { + return results.reject(err); + } + return results.resolve(err); + } + if (err) { + return results.reject(err); + } + if (arguments.length > 2) { + res = Array.slice(arguments, 1); + } + results.resolve(res); + }); + try { + fn.apply(this, args); + } + catch (err) { + results.reject(err); + } + return results; + }; + } + + function toPromise(obj) { + if (!obj) { + return value(obj); + } + if (isPromise(obj)) { + return obj; + } + if (isGeneratorFunction(obj) || isGenerator(obj)) { + return co(obj); + } + if ('function' == typeof obj) { + return thunkToPromise(obj); + } + return value(obj); + } + + function co(gen) { + var thisArg = (function() { return this; })(); + if (typeof gen === 'function') { + var args = Array.slice(arguments, 1); + gen = gen.apply(thisArg, args); + } + var future = new Future(); + + function onFulfilled(res) { + try { + next(gen.next(res)); + } + catch (e) { + future.reject(e); + } + } + + function onRejected(err) { + try { + next(gen['throw'](err)); + } + catch (e) { + return future.reject(e); + } + } + + function next(ret) { + if (ret.done) { + future.resolve(ret.value); + } + else { + toPromise(ret.value).then(onFulfilled, onRejected); + } + } + + if (!gen || typeof gen.next !== 'function') { + return future.resolve(gen); + } + onFulfilled(); + + return future; + } + function wrap(handler, thisArg) { return function() { + thisArg = thisArg || this; return all(arguments).then(function(args) { - return handler.apply(thisArg, args); + var result = handler.apply(thisArg, args); + if (isGeneratorFunction(result)) { + return co.call(thisArg, result); + } + return result; }); }; } function forEach(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.forEach(callback, thisArg); }); } function every(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.every(callback, thisArg); }); } function some(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.some(callback, thisArg); }); } function filter(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.filter(callback, thisArg); }); } function map(array, callback, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.map(callback, thisArg); }); @@ -312,12 +470,14 @@ } function find(array, predicate, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.find(predicate, thisArg); }); } function findIndex(array, predicate, thisArg) { + thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { return array.findIndex(predicate, thisArg); }); @@ -344,6 +504,9 @@ settle: { value: settle }, attempt: { value: attempt }, run: { value: run }, + thunkify: { value: thunkify }, + promisify: { value: promisify }, + co: { value: co }, wrap: { value: wrap }, // for array forEach: { value: forEach }, @@ -651,6 +814,11 @@ global.hprose.Future = Future; + global.hprose.thunkify = thunkify; + global.hprose.promisify = promisify; + global.hprose.co = co; + global.hprose.co.wrap = global.hprose.wrap = wrap; + function Completer() { var future = new Future(); Object.defineProperties(this, { diff --git a/utils/regenerator-runtime.js b/utils/regenerator-runtime.js new file mode 100644 index 0000000..4ec72f1 --- /dev/null +++ b/utils/regenerator-runtime.js @@ -0,0 +1,669 @@ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +!(function(global) { + "use strict"; + + var hasOwn = Object.prototype.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + var inModule = typeof module === "object"; + var runtime = global.regeneratorRuntime; + if (runtime) { + if (inModule) { + // If regeneratorRuntime is defined globally and we're in a module, + // make the exports object identical to regeneratorRuntime. + module.exports = runtime; + } + // Don't bother evaluating the rest of this file if the runtime was + // already defined globally. + return; + } + + // Define the runtime globally (as expected by generated code) as either + // module.exports (if we're in a module) or a new, empty object. + runtime = global.regeneratorRuntime = inModule ? module.exports : {}; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + runtime.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype; + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + runtime.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + runtime.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `value instanceof AwaitArgument` to determine if the yielded value is + // meant to be awaited. Some may consider the name of this method too + // cutesy, but they are curmudgeons. + runtime.awrap = function(arg) { + return new AwaitArgument(arg); + }; + + function AwaitArgument(arg) { + this.arg = arg; + } + + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value instanceof AwaitArgument) { + return Promise.resolve(value.arg).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. If the Promise is rejected, however, the + // result for this iteration will be rejected with the same + // reason. Note that rejections of yielded Promises are not + // thrown back into the generator function, as is the case + // when an awaited Promise is rejected. This difference in + // behavior between yield and await is important, because it + // allows the consumer to decide what to do with the yielded + // rejection (swallow it and continue, manually .throw it back + // into the generator, abandon iteration, whatever). With + // await, by contrast, there is no opportunity to examine the + // rejection reason outside the generator function, so the + // only option is to throw it from the await expression, and + // let the generator function handle the exception. + result.value = unwrapped; + resolve(result); + }, reject); + } + } + + if (typeof process === "object" && process.domain) { + invoke = process.domain.bind(invoke); + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + runtime.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return runtime.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + while (true) { + var delegate = context.delegate; + if (delegate) { + if (method === "return" || + (method === "throw" && delegate.iterator[method] === undefined)) { + // A return or throw (when the delegate iterator has no throw + // method) always terminates the yield* loop. + context.delegate = null; + + // If the delegate iterator has a return method, give it a + // chance to clean up. + var returnMethod = delegate.iterator["return"]; + if (returnMethod) { + var record = tryCatch(returnMethod, delegate.iterator, arg); + if (record.type === "throw") { + // If the return method threw an exception, let that + // exception prevail over the original return or throw. + method = "throw"; + arg = record.arg; + continue; + } + } + + if (method === "return") { + // Continue with the outer return, now that the delegate + // iterator has been terminated. + continue; + } + } + + var record = tryCatch( + delegate.iterator[method], + delegate.iterator, + arg + ); + + if (record.type === "throw") { + context.delegate = null; + + // Like returning generator.throw(uncaught), but without the + // overhead of an extra function call. + method = "throw"; + arg = record.arg; + continue; + } + + // Delegate generator ran and handled its own exceptions so + // regardless of what the method was, we continue as if it is + // "next" with an undefined arg. + method = "next"; + arg = undefined; + + var info = record.arg; + if (info.done) { + context[delegate.resultName] = info.value; + context.next = delegate.nextLoc; + } else { + state = GenStateSuspendedYield; + return info; + } + + context.delegate = null; + } + + if (method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = arg; + + } else if (method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw arg; + } + + if (context.dispatchException(arg)) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + method = "next"; + arg = undefined; + } + + } else if (method === "return") { + context.abrupt("return", arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + var info = { + value: record.arg, + done: context.done + }; + + if (record.arg === ContinueSentinel) { + if (context.delegate && method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + arg = undefined; + } + } else { + return info; + } + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(arg) call above. + method = "throw"; + arg = record.arg; + } + } + }; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp[toStringTagSymbol] = "Generator"; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + runtime.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + runtime.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + return !!caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.next = finallyEntry.finallyLoc; + } else { + this.complete(record); + } + + return ContinueSentinel; + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = record.arg; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + return ContinueSentinel; + } + }; +})( + // Among the various tricks for obtaining a reference to the global + // object, this seems to be the most reliable technique that does not + // use indirect eval (which violates Content Security Policy). + typeof global === "object" ? global : + typeof window === "object" ? window : + typeof self === "object" ? self : this +); From fba04a4cd306d998d9d7995f47b94ca07d960659 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 18 Nov 2016 01:19:59 +0800 Subject: [PATCH 58/86] Improved WebSocketClient --- src/WebSocketClient.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index bd43fad..a59a44a 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 16, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -101,7 +101,6 @@ ws = null; } function connect() { - _ready = new Future(); ws = new WebSocket(self.uri); ws.binaryType = 'arraybuffer'; ws.onopen = onopen; @@ -113,7 +112,7 @@ if (ws === null || ws.readyState === WebSocket.CLOSING || ws.readyState === WebSocket.CLOSED) { - connect(); + _ready = new Future(); } var id = getNextId(); var future = new Future(); @@ -135,6 +134,11 @@ else { _requests.push([id, request]); } + if (ws === null || + ws.readyState === WebSocket.CLOSING || + ws.readyState === WebSocket.CLOSED) { + connect(); + } if (env.oneway) { future.resolve(); } return future; } From 0245b172033516fb4937eccc5566b9902b23c80a Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 18 Nov 2016 01:36:51 +0800 Subject: [PATCH 59/86] Improved WebSocketClient --- bower.json | 2 +- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 14 +++++++------- package.json | 2 +- src/CopyRight.js | 2 +- src/WebSocketClient.js | 18 +++++++----------- 7 files changed, 20 insertions(+), 24 deletions(-) diff --git a/bower.json b/bower.json index 27a094e..7a6938e 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.24", + "version": "2.0.25", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 21d6d17..c54d455 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.24 +// Hprose for HTML5 v2.0.25 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -6,4 +6,4 @@ !function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&Q(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return Y(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function a(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return s(t)}catch(e){return a(e)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return Array.forEach(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){j(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function h(){return l(arguments)}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){j(e).fill(t)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){j(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){var r=j(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var t=function(){return this}(),r=Array.slice(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function d(e,t){var r=Array.slice(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e){return"function"==typeof e.next&&"function"==typeof e.throw}function m(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||w(t.prototype))}function b(e){var t=function(){return this}(),n=new r;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))}),n}function T(e){return function(){var t=Array.slice(arguments,0),n=this,i=new r;t.push(function(){n=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(n,t)})}}}function _(e){return function(){var t=Array.slice(arguments,0),n=new r;t.push(function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))});try{e.apply(this,t)}catch(e){n.reject(e)}return n}}function j(e){return e?i(e)?e:m(e)||w(e)?O(e):"function"==typeof e?b(e):s(e):s(e)}function O(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function n(t){try{i(e.throw(t))}catch(e){return s.reject(e)}}function i(e){e.done?s.resolve(e.value):j(e.value).then(t,n)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var s=new r;return e&&"function"==typeof e.next?(t(),s):s.resolve(e)}function E(e,t){return function(){return t=t||this,l(arguments).then(function(r){var n=e.apply(t,r);return m(n)?O.call(t,n):n})}}function S(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.forEach(t,r)})}function B(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.every(t,r)})}function A(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.some(t,r)})}function k(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.filter(t,r)})}function C(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.map(t,r)})}function I(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function x(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function R(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function P(e,r,n){return l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function M(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function U(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.find(t,r)})}function L(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.findIndex(t,r)})}function N(e,t,r){Q(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function F(e,t,r){e?N(e,t,r):t.resolve(r)}function W(e,t,r){e?N(e,t,r):t.reject(r)}function D(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==z}}})}var z=0,q=1,H=2,G="Promise"in e,Q=e.setImmediate,Y=e.setTimeout,J=e.clearTimeout,$=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:a},sync:{value:u},value:{value:s},all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a},promise:{value:c},isFuture:{value:n},isPromise:{value:i},toPromise:{value:j},join:{value:h},any:{value:v},settle:{value:g},attempt:{value:y},run:{value:d},thunkify:{value:T},promisify:{value:_},co:{value:O},wrap:{value:E},forEach:{value:S},every:{value:B},some:{value:A},filter:{value:k},map:{value:C},reduce:{value:I},reduceRight:{value:x},indexOf:{value:R},lastIndexOf:{value:P},includes:{value:M},find:{value:U},findIndex:{value:L}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:z,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===z){this._state=q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();F(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===z){this._state=H,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();W(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===q?F(e,n,this._value):this._state===H?W(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){Q(function(){throw e})})}},inspect:{value:function(){switch(this._state){case z:return{state:"pending"};case q:return{state:"fulfilled",value:this._value};case H:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=Y(function(){n.reject(t||new $("timeout"))},e);return this.whenComplete(function(){J(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){Y(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?I(this,e,t):I(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?x(this,e,t):x(this,e)}},indexOf:{value:function(e,t){return R(this,e,t)}},lastIndexOf:{value:function(e,t){return P(this,e,t)}},includes:{value:function(e,t){return M(this,e,t)}},find:{value:function(e,t){return U(this,e,t)}},findIndex:{value:function(e,t){return L(this,e,t)}}}),e.hprose.Future=r,e.hprose.thunkify=T,e.hprose.promisify=_,e.hprose.co=O,e.hprose.co.wrap=e.hprose.wrap=E,e.hprose.Completer=D,e.hprose.resolved=s,e.hprose.rejected=a,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},G||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]; }},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=S.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&S.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(E.TagNull);switch(n.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case j:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case O:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void d(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=d(i,r,0,"."),null===t&&(t=d(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return j(t);case ee.TagDouble:return E(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return B(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return R(e);case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagGuid:return F(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?G(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(N(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function j(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return j(e);default:r(t)}}function E(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return E(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return B(e);default:r(t)}}function B(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function R(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function P(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return R(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function L(e){var t=U(e);return e.refer.set(t),t}function N(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagRef:return K(e);default:r(t)}}function F(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function W(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return F(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return O(this.stream)}},readDouble:{value:function(){return S(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return R(this)}},readBytes:{value:function(){return P(this)}},readStringWithoutTag:{value:function(){return L(this)}},readString:{value:function(){return N(this)}},readGuidWithoutTag:{value:function(){return F(this)}},readGuid:{value:function(){return W(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function E(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(g,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var y=f.readList();C(y,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===d)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===y&&(n=r,r=!1),r||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)Ee(i,r,n)}}else rt.then(function(t){Se(e,t,n)});else h.isPromise(r)?r.then(function(t){Se(e,t,n)}):Ee(tt[e],r,n);v(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Pe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Se},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var y="boolean",d="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")), -function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=j,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,j=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){h(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new u,O=new l(E.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=r,O.onclose=g}function d(e,t){null!==O&&O.readyState!==l.CLOSING&&O.readyState!==l.CLOSED||y();var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),b<100?(++b,j.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=r,O.onmessage=r,O.onclose=r,O.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],j=null,O=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?(null!==_&&_.uri===d.uri||(_=new o(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new a(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:y}})}function u(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,y=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),s=new h(i||[]);return a._invoke=c(e,r,s),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(e){this.arg=e}function u(e){function t(n,i,o,a){var u=r(e[n],e,i);if("throw"!==u.type){var c=u.arg,f=c.value;return f instanceof s?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(u.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var s=n.delegate;if(s){if("return"===o||"throw"===o&&s.iterator[o]===g){n.delegate=null;var u=s.iterator.return;if(u){var c=r(u,s.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(s.iterator[o],s.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[s.resultName]=f.value,n.next=s.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:j;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=j,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,j=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){h(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new u,O=new l(E.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=r,O.onclose=g}function d(e,t){var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),null!==O&&O.readyState!==l.CLOSING&&O.readyState!==l.CLOSED||y(),b<100?(++b,j.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=r,O.onmessage=r,O.onclose=r,O.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],j=null,O=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?(null!==_&&_.uri===d.uri||(_=new o(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new a(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:y}})}function u(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,y=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),s=new h(i||[]);return a._invoke=c(e,r,s),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(e){this.arg=e}function u(e){function t(n,i,o,a){var u=r(e[n],e,i);if("throw"!==u.type){var c=u.arg,f=c.value;return f instanceof s?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(u.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var s=n.delegate;if(s){if("return"===o||"throw"===o&&s.iterator[o]===g){n.delegate=null;var u=s.iterator.return;if(u){var c=r(u,s.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(s.iterator[o],s.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[s.resultName]=f.value,n.next=s.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:j;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index ba37be2..cfc5c98 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 3e1109b..6a259fc 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.24 +// Hprose for HTML5 v2.0.25 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -5475,7 +5475,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5573,11 +5573,6 @@ ws.onclose = onclose; } function sendAndReceive(request, env) { - if (ws === null || - ws.readyState === WebSocket.CLOSING || - ws.readyState === WebSocket.CLOSED) { - connect(); - } var id = getNextId(); var future = new Future(); _futures[id] = future; @@ -5591,6 +5586,11 @@ return e instanceof TimeoutError; }); } + if (ws === null || + ws.readyState === WebSocket.CLOSING || + ws.readyState === WebSocket.CLOSED) { + connect(); + } if (_count < 100) { ++_count; _ready.then(function() { send(id, request); }); diff --git a/package.json b/package.json index ff2e64f..7c23254 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.24", + "version": "2.0.25", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index a31b6b4..fe4046e 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.24 +// Hprose for HTML5 v2.0.25 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index a59a44a..1791ecb 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Nov 16, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -101,6 +101,7 @@ ws = null; } function connect() { + _ready = new Future(); ws = new WebSocket(self.uri); ws.binaryType = 'arraybuffer'; ws.onopen = onopen; @@ -109,11 +110,6 @@ ws.onclose = onclose; } function sendAndReceive(request, env) { - if (ws === null || - ws.readyState === WebSocket.CLOSING || - ws.readyState === WebSocket.CLOSED) { - _ready = new Future(); - } var id = getNextId(); var future = new Future(); _futures[id] = future; @@ -127,6 +123,11 @@ return e instanceof TimeoutError; }); } + if (ws === null || + ws.readyState === WebSocket.CLOSING || + ws.readyState === WebSocket.CLOSED) { + connect(); + } if (_count < 100) { ++_count; _ready.then(function() { send(id, request); }); @@ -134,11 +135,6 @@ else { _requests.push([id, request]); } - if (ws === null || - ws.readyState === WebSocket.CLOSING || - ws.readyState === WebSocket.CLOSED) { - connect(); - } if (env.oneway) { future.resolve(); } return future; } From 7551742cd2508cdf3645c6b9ebd942441acbe678 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 18 Nov 2016 16:57:39 +0800 Subject: [PATCH 60/86] Improved toPromise & wrap --- src/Future.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Future.js b/src/Future.js index 21b187a..6bb3dc7 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Nov 17, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -203,6 +203,9 @@ } function isGenerator(obj) { + if (!obj) { + return false; + } return 'function' == typeof obj.next && 'function' == typeof obj['throw']; } @@ -222,6 +225,9 @@ } function thunkToPromise(fn) { + if (isGeneratorFunction(fn) || isGenerator(fn)) { + return co(fn); + } var thisArg = (function() { return this; })(); var future = new Future(); fn.call(thisArg, function(err, res) { @@ -304,9 +310,6 @@ if (isGeneratorFunction(obj) || isGenerator(obj)) { return co(obj); } - if ('function' == typeof obj) { - return thunkToPromise(obj); - } return value(obj); } @@ -341,7 +344,9 @@ future.resolve(ret.value); } else { - toPromise(ret.value).then(onFulfilled, onRejected); + (('function' == typeof ret.value) ? + thunkToPromise(ret.value) : + toPromise(ret.value)).then(onFulfilled, onRejected); } } @@ -358,7 +363,7 @@ thisArg = thisArg || this; return all(arguments).then(function(args) { var result = handler.apply(thisArg, args); - if (isGeneratorFunction(result)) { + if (isGeneratorFunction(result) || isGenerator(result)) { return co.call(thisArg, result); } return result; From fcdc7a8e934926934df772209e9d3118761c6554 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 18 Nov 2016 16:57:51 +0800 Subject: [PATCH 61/86] Update to 2.0.26 --- bower.json | 2 +- dist/hprose-html5.js | 8 ++++---- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 19 ++++++++++++------- package.json | 2 +- src/CopyRight.js | 2 +- 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/bower.json b/bower.json index 7a6938e..6090c48 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.25", + "version": "2.0.26", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index c54d455..ae8f355 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.25 +// Hprose for HTML5 v2.0.26 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&Q(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return Y(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function a(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return s(t)}catch(e){return a(e)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return Array.forEach(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){j(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function h(){return l(arguments)}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){j(e).fill(t)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){j(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){var r=j(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var t=function(){return this}(),r=Array.slice(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function d(e,t){var r=Array.slice(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e){return"function"==typeof e.next&&"function"==typeof e.throw}function m(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||w(t.prototype))}function b(e){var t=function(){return this}(),n=new r;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))}),n}function T(e){return function(){var t=Array.slice(arguments,0),n=this,i=new r;t.push(function(){n=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(n,t)})}}}function _(e){return function(){var t=Array.slice(arguments,0),n=new r;t.push(function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))});try{e.apply(this,t)}catch(e){n.reject(e)}return n}}function j(e){return e?i(e)?e:m(e)||w(e)?O(e):"function"==typeof e?b(e):s(e):s(e)}function O(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function n(t){try{i(e.throw(t))}catch(e){return s.reject(e)}}function i(e){e.done?s.resolve(e.value):j(e.value).then(t,n)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var s=new r;return e&&"function"==typeof e.next?(t(),s):s.resolve(e)}function E(e,t){return function(){return t=t||this,l(arguments).then(function(r){var n=e.apply(t,r);return m(n)?O.call(t,n):n})}}function S(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.forEach(t,r)})}function B(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.every(t,r)})}function A(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.some(t,r)})}function k(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.filter(t,r)})}function C(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.map(t,r)})}function I(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function x(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function R(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function P(e,r,n){return l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function M(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function U(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.find(t,r)})}function L(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.findIndex(t,r)})}function N(e,t,r){Q(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function F(e,t,r){e?N(e,t,r):t.resolve(r)}function W(e,t,r){e?N(e,t,r):t.reject(r)}function D(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==z}}})}var z=0,q=1,H=2,G="Promise"in e,Q=e.setImmediate,Y=e.setTimeout,J=e.clearTimeout,$=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:a},sync:{value:u},value:{value:s},all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a},promise:{value:c},isFuture:{value:n},isPromise:{value:i},toPromise:{value:j},join:{value:h},any:{value:v},settle:{value:g},attempt:{value:y},run:{value:d},thunkify:{value:T},promisify:{value:_},co:{value:O},wrap:{value:E},forEach:{value:S},every:{value:B},some:{value:A},filter:{value:k},map:{value:C},reduce:{value:I},reduceRight:{value:x},indexOf:{value:R},lastIndexOf:{value:P},includes:{value:M},find:{value:U},findIndex:{value:L}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:z,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===z){this._state=q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();F(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===z){this._state=H,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();W(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===q?F(e,n,this._value):this._state===H?W(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){Q(function(){throw e})})}},inspect:{value:function(){switch(this._state){case z:return{state:"pending"};case q:return{state:"fulfilled",value:this._value};case H:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=Y(function(){n.reject(t||new $("timeout"))},e);return this.whenComplete(function(){J(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){Y(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?I(this,e,t):I(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?x(this,e,t):x(this,e)}},indexOf:{value:function(e,t){return R(this,e,t)}},lastIndexOf:{value:function(e,t){return P(this,e,t)}},includes:{value:function(e,t){return M(this,e,t)}},find:{value:function(e,t){return U(this,e,t)}},findIndex:{value:function(e,t){return L(this,e,t)}}}),e.hprose.Future=r,e.hprose.thunkify=T,e.hprose.promisify=_,e.hprose.co=O,e.hprose.co.wrap=e.hprose.wrap=E,e.hprose.Completer=D,e.hprose.resolved=s,e.hprose.rejected=a,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},G||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return s(this.bytes,this._length)[0]; -}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=S.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&S.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(E.TagNull);switch(n.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case j:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case O:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void d(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=d(i,r,0,"."),null===t&&(t=d(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return j(t);case ee.TagDouble:return E(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return B(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return R(e);case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagGuid:return F(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?G(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(N(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function j(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return j(e);default:r(t)}}function E(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return E(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return B(e);default:r(t)}}function B(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function R(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function P(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return R(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function L(e){var t=U(e);return e.refer.set(t),t}function N(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagRef:return K(e);default:r(t)}}function F(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function W(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return F(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return O(this.stream)}},readDouble:{value:function(){return S(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return R(this)}},readBytes:{value:function(){return P(this)}},readStringWithoutTag:{value:function(){return L(this)}},readString:{value:function(){return N(this)}},readGuidWithoutTag:{value:function(){return F(this)}},readGuid:{value:function(){return W(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function E(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(g,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var y=f.readList();C(y,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===d)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===y&&(n=r,r=!1),r||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)Ee(i,r,n)}}else rt.then(function(t){Se(e,t,n)});else h.isPromise(r)?r.then(function(t){Se(e,t,n)}):Ee(tt[e],r,n);v(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Pe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Se},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var y="boolean",d="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{value:o}),e.hprose.Client=n}(this||[eval][0]("this")), -function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=j,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,j=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){h(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new u,O=new l(E.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=r,O.onclose=g}function d(e,t){var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),null!==O&&O.readyState!==l.CLOSING&&O.readyState!==l.CLOSED||y(),b<100?(++b,j.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=r,O.onmessage=r,O.onclose=r,O.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],j=null,O=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?(null!==_&&_.uri===d.uri||(_=new o(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new a(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:y}})}function u(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,y=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),s=new h(i||[]);return a._invoke=c(e,r,s),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(e){this.arg=e}function u(e){function t(n,i,o,a){var u=r(e[n],e,i);if("throw"!==u.type){var c=u.arg,f=c.value;return f instanceof s?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(u.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var s=n.delegate;if(s){if("return"===o||"throw"===o&&s.iterator[o]===g){n.delegate=null;var u=s.iterator.return;if(u){var c=r(u,s.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(s.iterator[o],s.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[s.resultName]=f.value,n.next=s.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:j;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&Q(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return Y(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function a(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return s(t)}catch(e){return a(e)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return Array.forEach(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){j(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function h(){return l(arguments)}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){j(e).fill(t)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){j(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){var r=j(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var t=function(){return this}(),r=Array.slice(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function d(e,t){var r=Array.slice(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function m(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||w(t.prototype))}function b(e){if(m(e)||w(e))return O(e);var t=function(){return this}(),n=new r;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))}),n}function T(e){return function(){var t=Array.slice(arguments,0),n=this,i=new r;t.push(function(){n=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(n,t)})}}}function _(e){return function(){var t=Array.slice(arguments,0),n=new r;t.push(function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))});try{e.apply(this,t)}catch(e){n.reject(e)}return n}}function j(e){return e?i(e)?e:m(e)||w(e)?O(e):s(e):s(e)}function O(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function n(t){try{i(e.throw(t))}catch(e){return s.reject(e)}}function i(e){e.done?s.resolve(e.value):("function"==typeof e.value?b(e.value):j(e.value)).then(t,n)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var s=new r;return e&&"function"==typeof e.next?(t(),s):s.resolve(e)}function E(e,t){return function(){return t=t||this,l(arguments).then(function(r){var n=e.apply(t,r);return m(n)||w(n)?O.call(t,n):n})}}function S(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.forEach(t,r)})}function B(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.every(t,r)})}function A(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.some(t,r)})}function k(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.filter(t,r)})}function C(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.map(t,r)})}function I(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function x(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function R(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function P(e,r,n){return l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function M(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function U(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.find(t,r)})}function L(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.findIndex(t,r)})}function N(e,t,r){Q(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function F(e,t,r){e?N(e,t,r):t.resolve(r)}function W(e,t,r){e?N(e,t,r):t.reject(r)}function D(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==z}}})}var z=0,q=1,H=2,G="Promise"in e,Q=e.setImmediate,Y=e.setTimeout,J=e.clearTimeout,$=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:a},sync:{value:u},value:{value:s},all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a},promise:{value:c},isFuture:{value:n},isPromise:{value:i},toPromise:{value:j},join:{value:h},any:{value:v},settle:{value:g},attempt:{value:y},run:{value:d},thunkify:{value:T},promisify:{value:_},co:{value:O},wrap:{value:E},forEach:{value:S},every:{value:B},some:{value:A},filter:{value:k},map:{value:C},reduce:{value:I},reduceRight:{value:x},indexOf:{value:R},lastIndexOf:{value:P},includes:{value:M},find:{value:U},findIndex:{value:L}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:z,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===z){this._state=q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();F(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===z){this._state=H,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();W(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===q?F(e,n,this._value):this._state===H?W(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){Q(function(){throw e})})}},inspect:{value:function(){switch(this._state){case z:return{state:"pending"};case q:return{state:"fulfilled",value:this._value};case H:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=Y(function(){n.reject(t||new $("timeout"))},e);return this.whenComplete(function(){J(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){Y(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?I(this,e,t):I(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?x(this,e,t):x(this,e)}},indexOf:{value:function(e,t){return R(this,e,t)}},lastIndexOf:{value:function(e,t){return P(this,e,t)}},includes:{value:function(e,t){return M(this,e,t)}},find:{value:function(e,t){return U(this,e,t)}},findIndex:{value:function(e,t){return L(this,e,t)}}}),e.hprose.Future=r,e.hprose.thunkify=T,e.hprose.promisify=_,e.hprose.co=O,e.hprose.co.wrap=e.hprose.wrap=E,e.hprose.Completer=D,e.hprose.resolved=s,e.hprose.rejected=a,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},G||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{ +value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=S.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&S.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(E.TagNull);switch(n.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case j:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case O:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void d(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=d(i,r,0,"."),null===t&&(t=d(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return j(t);case ee.TagDouble:return E(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return B(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return R(e);case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagGuid:return F(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?G(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(N(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function j(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return j(e);default:r(t)}}function E(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return E(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return B(e);default:r(t)}}function B(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function R(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function P(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return R(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function L(e){var t=U(e);return e.refer.set(t),t}function N(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagRef:return K(e);default:r(t)}}function F(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function W(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return F(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return O(this.stream)}},readDouble:{value:function(){return S(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return R(this)}},readBytes:{value:function(){return P(this)}},readStringWithoutTag:{value:function(){return L(this)}},readString:{value:function(){return N(this)}},readGuidWithoutTag:{value:function(){return F(this)}},readGuid:{value:function(){return W(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function E(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(g,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var y=f.readList();C(y,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===d)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===y&&(n=r,r=!1),r||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)Ee(i,r,n)}}else rt.then(function(t){Se(e,t,n)});else h.isPromise(r)?r.then(function(t){Se(e,t,n)}):Ee(tt[e],r,n);v(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Pe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Se},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var y="boolean",d="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{ +value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=j,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,j=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){h(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new u,O=new l(E.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=r,O.onclose=g}function d(e,t){var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),null!==O&&O.readyState!==l.CLOSING&&O.readyState!==l.CLOSED||y(),b<100?(++b,j.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=r,O.onmessage=r,O.onclose=r,O.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],j=null,O=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?(null!==_&&_.uri===d.uri||(_=new o(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new a(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:y}})}function u(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,y=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),s=new h(i||[]);return a._invoke=c(e,r,s),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(e){this.arg=e}function u(e){function t(n,i,o,a){var u=r(e[n],e,i);if("throw"!==u.type){var c=u.arg,f=c.value;return f instanceof s?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(u.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var s=n.delegate;if(s){if("return"===o||"throw"===o&&s.iterator[o]===g){n.delegate=null;var u=s.iterator.return;if(u){var c=r(u,s.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(s.iterator[o],s.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[s.resultName]=f.value,n.next=s.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:j;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index cfc5c98..8c457bb 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 6a259fc..8f99b9a 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.25 +// Hprose for HTML5 v2.0.26 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -1097,7 +1097,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Nov 17, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1287,6 +1287,9 @@ } function isGenerator(obj) { + if (!obj) { + return false; + } return 'function' == typeof obj.next && 'function' == typeof obj['throw']; } @@ -1306,6 +1309,9 @@ } function thunkToPromise(fn) { + if (isGeneratorFunction(fn) || isGenerator(fn)) { + return co(fn); + } var thisArg = (function() { return this; })(); var future = new Future(); fn.call(thisArg, function(err, res) { @@ -1388,9 +1394,6 @@ if (isGeneratorFunction(obj) || isGenerator(obj)) { return co(obj); } - if ('function' == typeof obj) { - return thunkToPromise(obj); - } return value(obj); } @@ -1425,7 +1428,9 @@ future.resolve(ret.value); } else { - toPromise(ret.value).then(onFulfilled, onRejected); + (('function' == typeof ret.value) ? + thunkToPromise(ret.value) : + toPromise(ret.value)).then(onFulfilled, onRejected); } } @@ -1442,7 +1447,7 @@ thisArg = thisArg || this; return all(arguments).then(function(args) { var result = handler.apply(thisArg, args); - if (isGeneratorFunction(result)) { + if (isGeneratorFunction(result) || isGenerator(result)) { return co.call(thisArg, result); } return result; diff --git a/package.json b/package.json index 7c23254..adcd557 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.25", + "version": "2.0.26", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index fe4046e..9182954 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.25 +// Hprose for HTML5 v2.0.26 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From 307d2b458efcb28484ecf9138a884fda4ed064b5 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 18 Nov 2016 21:12:19 +0800 Subject: [PATCH 62/86] Removed eval --- dist/hprose-html5.js | 6 +- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 377 +++++++++++++++++++------------------ gulpfile.js | 2 +- src/APICloudTcpSocket.js | 14 +- src/Base64.js | 4 +- src/BytesIO.js | 10 +- src/ChromeTcpSocket.js | 10 +- src/ClassManager.js | 10 +- src/Client.js | 30 +-- src/Formatter.js | 18 +- src/Future.js | 34 ++-- src/HarmonyMaps.js | 4 +- src/Helper.js | 18 +- src/HttpClient.js | 16 +- src/Init.js | 17 +- src/JSONRPCClientFilter.js | 18 +- src/Loader.js | 50 ++--- src/Polyfill.js | 8 +- src/Reader.js | 16 +- src/ResultMode.js | 16 +- src/Tags.js | 8 +- src/TcpClient.js | 20 +- src/TimeoutError.js | 24 ++- src/WebSocketClient.js | 14 +- src/Writer.js | 14 +- src/setImmediate.js | 4 +- 27 files changed, 385 insertions(+), 379 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index ae8f355..ea8b2fd 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -!function(e){"use strict";e.hprose=Object.create(null)}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),s=arguments[2],u=s===t?n:s>>0,c=u<0?Math.max(n+u,0):Math.min(u,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),s=r>>0,u=s<0?Math.max(i+s,0):Math.min(s,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-u,i-a),p=1;for(u0;)u in n?n[a]=n[u]:delete n[a],u+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,s=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof s){if(!r(s))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var u,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var s=0;s0&&Array.isArray(arguments[0]))for(var u=arguments[0],c=0,f=u.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,s=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},u.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},u.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},u.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},u.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,u.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=u.readyStateChange():a&&s?l.setImmediate=u.mutationObserver():e.MessageChannel?l.setImmediate=u.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=u.postMessage():l.setImmediate=u.setTimeout():l.setImmediate=u.nextTick(),l.clearImmediate=n}}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&Q(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function n(e){return e instanceof r}function i(e){return"function"==typeof e.then}function o(e,t){var n="function"==typeof t?t:function(){return t},i=new r;return Y(function(){try{i.resolve(n())}catch(e){i.reject(e)}},e),i}function a(e){var t=new r;return t.reject(e),t}function s(e){var t=new r;return t.resolve(e),t}function u(e){try{var t=e();return s(t)}catch(e){return a(e)}}function c(e){var t=new r;return e(t.resolve,t.reject),t}function f(e){var t=0;return Array.forEach(e,function(){++t}),t}function l(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){j(e).then(function(e){i[t]=e,0===--n&&o.resolve(i)},o.reject)}),o})}function h(){return l(arguments)}function p(e){return e=i(e)?e:s(e),e.then(function(e){var t=new r;return Array.forEach(e,function(e){j(e).fill(t)}),t})}function v(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e);if(0===n)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new r;return Array.forEach(e,function(e,t){j(e).then(o.resolve,function(e){i[t]=e,0===--n&&o.reject(i)})}),o})}function g(e){return e=i(e)?e:s(e),e.then(function(e){var t=e.length,n=f(e),i=new Array(t);if(0===n)return s(i);var o=new r;return Array.forEach(e,function(e,t){var r=j(e);r.whenComplete(function(){i[t]=r.inspect(),0===--n&&o.resolve(i)})}),o})}function y(e){var t=function(){return this}(),r=Array.slice(arguments,1);return l(r).then(function(r){return e.apply(t,r)})}function d(e,t){var r=Array.slice(arguments,2);return l(r).then(function(r){return e.apply(t,r)})}function w(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function m(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||w(t.prototype))}function b(e){if(m(e)||w(e))return O(e);var t=function(){return this}(),n=new r;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))}),n}function T(e){return function(){var t=Array.slice(arguments,0),n=this,i=new r;t.push(function(){n=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(n,t)})}}}function _(e){return function(){var t=Array.slice(arguments,0),n=new r;t.push(function(e,t){return arguments.length<2?e instanceof Error?n.reject(e):n.resolve(e):e?n.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void n.resolve(t))});try{e.apply(this,t)}catch(e){n.reject(e)}return n}}function j(e){return e?i(e)?e:m(e)||w(e)?O(e):s(e):s(e)}function O(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function n(t){try{i(e.throw(t))}catch(e){return s.reject(e)}}function i(e){e.done?s.resolve(e.value):("function"==typeof e.value?b(e.value):j(e.value)).then(t,n)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var s=new r;return e&&"function"==typeof e.next?(t(),s):s.resolve(e)}function E(e,t){return function(){return t=t||this,l(arguments).then(function(r){var n=e.apply(t,r);return m(n)||w(n)?O.call(t,n):n})}}function S(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.forEach(t,r)})}function B(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.every(t,r)})}function A(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.some(t,r)})}function k(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.filter(t,r)})}function C(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.map(t,r)})}function I(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):l(e).then(function(e){return e.reduce(t)})}function x(e,t,r){return arguments.length>2?l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):l(e).then(function(e){return e.reduceRight(t)})}function R(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function P(e,r,n){return l(e).then(function(e){return i(r)||(r=s(r)),r.then(function(r){return n===t&&(n=e.length-1),e.lastIndexOf(r,n)})})}function M(e,t,r){return l(e).then(function(e){return i(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function U(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.find(t,r)})}function L(e,t,r){return r=r||function(){return this}(),l(e).then(function(e){return e.findIndex(t,r)})}function N(e,t,r){Q(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function F(e,t,r){e?N(e,t,r):t.resolve(r)}function W(e,t,r){e?N(e,t,r):t.reject(r)}function D(){var e=new r;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==z}}})}var z=0,q=1,H=2,G="Promise"in e,Q=e.setImmediate,Y=e.setTimeout,J=e.clearTimeout,$=e.TimeoutError;Object.defineProperties(r,{delayed:{value:o},error:{value:a},sync:{value:u},value:{value:s},all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a},promise:{value:c},isFuture:{value:n},isPromise:{value:i},toPromise:{value:j},join:{value:h},any:{value:v},settle:{value:g},attempt:{value:y},run:{value:d},thunkify:{value:T},promisify:{value:_},co:{value:O},wrap:{value:E},forEach:{value:S},every:{value:B},some:{value:A},filter:{value:k},map:{value:C},reduce:{value:I},reduceRight:{value:x},indexOf:{value:R},lastIndexOf:{value:P},includes:{value:M},find:{value:U},findIndex:{value:L}}),Object.defineProperties(r.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:z,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(n(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var i=this;return void t.call(e,function(e){r&&(r=!1,i.resolve(e))},function(e){r&&(r=!1,i.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===z){this._state=q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();F(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===z){this._state=H,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();W(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var n=new r;return this._state===q?F(e,n,this._value):this._state===H?W(t,n,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:n}),n}},done:{value:function(e,t){this.then(e,t).then(null,function(e){Q(function(){throw e})})}},inspect:{value:function(){switch(this._state){case z:return{state:"pending"};case q:return{state:"fulfilled",value:this._value};case H:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var n=new r,i=Y(function(){n.reject(t||new $("timeout"))},e);return this.whenComplete(function(){J(i)}).fill(n),n}},delay:{value:function(e){var t=new r;return this.then(function(r){Y(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return l(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return l(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?I(this,e,t):I(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?x(this,e,t):x(this,e)}},indexOf:{value:function(e,t){return R(this,e,t)}},lastIndexOf:{value:function(e,t){return P(this,e,t)}},includes:{value:function(e,t){return M(this,e,t)}},find:{value:function(e,t){return U(this,e,t)}},findIndex:{value:function(e,t){return L(this,e,t)}}}),e.hprose.Future=r,e.hprose.thunkify=T,e.hprose.promisify=_,e.hprose.co=O,e.hprose.co.wrap=e.hprose.wrap=E,e.hprose.Completer=D,e.hprose.resolved=s,e.hprose.rejected=a,e.hprose.deferred=function(){var e=new r;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},G||(e.Promise=function(e){r.call(this),e(this.resolve,this.reject)},e.Promise.prototype=Object.create(r.prototype),e.Promise.prototype.constructor=r,Object.defineProperties(e.Promise,{all:{value:l},race:{value:p},resolve:{value:s},reject:{value:a}}))}(this||[eval][0]("this")),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|63&s,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=s;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+s.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function s(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function u(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return s(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.hprose.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=s(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=s(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{ -value:function(){return s(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.hprose.BytesIO=f}(this||[eval][0]("this")),function(e){"use strict";e.hprose.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){a.set(e,t),o[t]=e}function r(e){return a.get(e)}function n(e){return o[e]}var i=e.WeakMap,o=Object.create(null),a=new i;e.hprose.ClassManager=Object.create(null,{register:{value:t},getClassAlias:{value:r},getClass:{value:n}}),e.hprose.register=t,t(Object,"Object")}(this||[eval][0]("this")),function(e,t){"use strict";function r(e){var t=e.constructor,r=S.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&S.register(t,r),r}function n(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function i(e){return new n(e)}function o(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:i(e)}})}function a(e,n){var i=e.stream;if(n===t||null===n)return void i.writeByte(E.TagNull);switch(n.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,n);case Boolean:return void f(e,n);case String:switch(n.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(n)}return void e.writeStringWithRef(n);case Date:return void e.writeDateWithRef(n);case j:return void e.writeMapWithRef(n);case ArrayBuffer:case Uint8Array:case O:return void e.writeBytesWithRef(n);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void d(e,n);case Float32Array:case Float64Array:return void w(e,n);default:if(Array.isArray(n))e.writeListWithRef(n);else{var o=r(n);"Object"===o?e.writeMapWithRef(n):e.writeObjectWithRef(n)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function u(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function c(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function f(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function l(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),s=("00"+t.getUTCMinutes()).slice(-2),u=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),s=("00"+t.getMinutes()).slice(-2),u=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===s&&"00"===u&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+s+u),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function g(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var s=0;s0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){a(e,r),a(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function T(e,t){var n,i,o=e.stream,s=r(t);if(s in e._classref)i=e._classref[s],n=e._fieldsref[i];else{n=[];for(var u in t)t.hasOwnProperty(u)&&"function"!=typeof t[u]&&(n[n.length]=u.toString());i=_(e,s,n)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=n.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=d(i,r,0,"."),null===t&&(t=d(i,r,0,"_")),"function"==typeof t)return te.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),te.register(t,e),t}function m(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function b(e){var t=e.stream,n=t.readByte();switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n-48;case ee.TagInteger:return T(t);case ee.TagLong:return j(t);case ee.TagDouble:return E(t);case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagTrue:return!0;case ee.TagFalse:return!1;case ee.TagNaN:return NaN;case ee.TagInfinity:return B(t);case ee.TagDate:return k(e);case ee.TagTime:return I(e);case ee.TagBytes:return R(e);case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagGuid:return F(e);case ee.TagList:return D(e);case ee.TagMap:return e.useHarmonyMap?G(e):q(e);case ee.TagClass:return $(e),J(e);case ee.TagObject:return Y(e);case ee.TagRef:return K(e);case ee.TagError:throw new Error(N(e));default:r(n)}}function T(e){return m(e,ee.TagSemicolon)}function _(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:return T(e);default:r(t)}}function j(e){var t=e.readUntil(ee.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:return j(e);default:r(t)}}function E(e){return parseFloat(e.readUntil(ee.TagSemicolon))}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case ee.TagInteger:case ee.TagLong:case ee.TagDouble:return E(e);case ee.TagNaN:return NaN;case ee.TagInfinity:return B(e);default:r(t)}}function B(e){return e.readByte()===ee.TagNeg?-(1/0):1/0}function A(e){var t=e.readByte();switch(t){case ee.TagTrue:return!0;case ee.TagFalse:return!1;default:r(t)}}function k(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===ee.TagTime){var s=parseInt(r.readAsciiString(2),10),u=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===ee.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===ee.TagUTC?new Date(Date.UTC(n,i,o,s,u,c,f)):new Date(n,i,o,s,u,c,f)}else t=a===ee.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function C(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagDate:return k(e);case ee.TagRef:return K(e);default:r(t)}}function I(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,s=r.readByte();return s===ee.TagPoint&&(a=parseInt(r.readAsciiString(3),10),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte(),s>=48&&s<=57&&(r.skip(2),s=r.readByte()))),t=s===ee.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagTime:return I(e);case ee.TagRef:return K(e);default:r(t)}}function R(e){var t=e.stream,r=m(t,ee.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function P(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return new Uint8Array(0);case ee.TagBytes:return R(e);case ee.TagRef:return K(e);default:r(t)}}function M(e){return e.stream.readString(1)}function U(e){var t=e.stream,r=t.readString(m(t,ee.TagQuote));return t.skip(1),r}function L(e){var t=U(e);return e.refer.set(t),t}function N(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagEmpty:return"";case ee.TagUTF8Char:return M(e);case ee.TagString:return L(e);case ee.TagRef:return K(e);default:r(t)}}function F(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function W(e){var t=e.stream.readByte();switch(t){case ee.TagNull:return null;case ee.TagGuid:return F(e);case ee.TagRef:return K(e);default:r(t)}}function D(e){var t=e.stream,r=[];e.refer.set(r);for(var n=m(t,ee.TagOpenbrace),i=0;i=0?n:void r(n,e)}},unserialize:{value:function(){return b(this)}},readInteger:{value:function(){return _(this.stream)}},readLong:{value:function(){return O(this.stream)}},readDouble:{value:function(){return S(this.stream)}},readBoolean:{value:function(){return A(this.stream)}},readDateWithoutTag:{value:function(){return k(this)}},readDate:{value:function(){return C(this)}},readTimeWithoutTag:{value:function(){return I(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return R(this)}},readBytes:{value:function(){return P(this)}},readStringWithoutTag:{value:function(){return L(this)}},readString:{value:function(){return N(this)}},readGuidWithoutTag:{value:function(){return F(this)}},readGuid:{value:function(){return W(this)}},readListWithoutTag:{value:function(){return D(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?G(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readObjectWithoutTag:{value:function(){return Y(this)}},readObject:{value:function(){return J(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.hprose.Reader=V}(this||[eval][0]("this")),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.hprose.BytesIO,i=e.hprose.Writer,o=e.hprose.Reader;e.hprose.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.hprose.serialize=t,e.hprose.unserialize=r}(this||[eval][0]("this")),function(e){"use strict";e.hprose.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.hprose.Normal=e.hprose.ResultMode.Normal,e.hprose.Serialized=e.hprose.ResultMode.Serialized,e.hprose.Raw=e.hprose.ResultMode.Raw,e.hprose.RawWithEndTag=e.hprose.ResultMode.RawWithEndTag}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,n,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function T(e,t){return e=o(e,t),st(e,t).then(function(e){if(!t.oneway)return p(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function E(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?h.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new c(t),i=new l(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+c.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(g,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):h.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,r,n,i,o){if(r[i]===t&&(r[i]={},typeof o!==d&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?h.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),h.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===u.RawWithEndTag)o=n;else if(r.mode===u.Raw)o=n.subarray(0,n.byteLength-1);else{var f=new c(n),h=new l(f,(!1),r.useHarmonyMap),p=f.readByte();if(p===s.TagResult){if(o=r.mode===u.Serialized?h.readRaw():h.unserialize(),p=f.readByte(),p===s.TagArgument){h.reset();var v=h.readList();C(v,t),p=f.readByte()}}else p===s.TagError&&(a=new Error(h.readString()),p=f.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+c.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,a(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=h.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return h.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new c);return r.writeByte(s.TagEnd),h.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new c(r),f=new l(a,(!1)),h=a.readByte();try{for(;h!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=u.Raw&&(p=new c),h===s.TagResult){if(g===u.Serialized?p=f.readRaw():g>=u.Raw?(p.writeByte(s.TagResult),p.write(f.readRaw())):(f.useHarmonyMap=e[o].context.useHarmonyMap,f.reset(),p=f.unserialize()),h=a.readByte(),h===s.TagArgument){if(g>=u.Raw)p.writeByte(s.TagArgument),p.write(f.readRaw());else{f.reset();var y=f.readList();C(y,e[o].args)}h=a.readByte()}}else h===s.TagError&&(g>=u.Raw?(p.writeByte(s.TagError),p.write(f.readRaw())):(f.reset(),v=new Error(f.readString())),h=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(h)<0)return void i(new Error("Wrong Response:\r\n"+c.toString(r)));g>=u.Raw?(g===u.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return h.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return h.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=h.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===m&&($e=e)}function Y(){return Ke}function J(e){typeof e===m&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===d)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function se(e){nt=!!e}function ue(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,r,n){n===t&&(typeof r===y&&(n=r,r=!1),r||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(r=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof r===d||r&&r.constructor===Object)&&(r=[r]),Array.isArray(r)?(k(i,r),et.resolve(i),i):(a(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,n){var i=arguments.length;if(i<1||typeof e!==d)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==m&&o.push(r),o.push(t),t=o}if(i>2){typeof n!==m&&t.push(r);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,r,n){if(typeof e!==d)throw new TypeError("topic name must be a string.");if(r===t||null===r){if(typeof n!==m)return void delete tt[e];r=n}if(typeof r===m&&(n=r,r=null),null===r)if(null===rt){if(tt[e]){var i=tt[e];for(r in i)Ee(i,r,n)}}else rt.then(function(t){Se(e,t,n)});else h.isPromise(r)?r.then(function(t){Se(e,t,n)}):Ee(tt[e],r,n);v(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){ut.push(e),it=ut.reduceRight(function(e,t){return function(r,n,i){return h.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},T)}function Pe(e){lt.push(e),st=lt.reduceRight(function(e,t){return function(r,n){return h.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=r,Ke=r,Ve=[],Xe=!1,Ze=[],et=new h,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=T,st=_,ut=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:ue,set:se},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Se},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===b&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(n))}function i(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function o(t,r,n){try{return e.hprose.HttpClient.create(t,r,n)}catch(e){}try{return e.hprose.TcpClient.create(t,r,n)}catch(e){}try{return e.hprose.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)i(t);else if(Array.isArray(t))throw t.forEach(function(e){i(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var a=e.setImmediate,s=e.hprose.Tags,u=e.hprose.ResultMode,c=e.hprose.BytesIO,f=e.hprose.Writer,l=e.hprose.Reader,h=e.hprose.Future,p=e.hprose.parseuri,v=e.hprose.isObjectEmpty,g=new Uint8Array(1);g[0]=s.TagEnd;var y="boolean",d="string",w="number",m="function",b="object";Object.defineProperty(n,"create",{ -value:o}),e.hprose.Client=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(i,o,f){function h(e,n){var i=new s,o=new l;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=r,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==t&&(o.upload.onprogress=_),o.onprogress=j,n.timeout>0&&(i=i.timeout(n.timeout).catchError(function(e){throw o.onload=r,o.onerror=r,o.abort(),e},function(e){return e instanceof c})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(t,r){var n=new s;return e.api.ajax({url:O.uri(),method:"post",data:{body:u.toString(t)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new u(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(t,r){var n="undefined"!=typeof e.api&&"undefined"!=typeof e.api.ajax,i=n?v(t,r):h(t,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==n)return new n(i,o,f);a.call(this,i,o,f);var T=Object.create(null),_=r,j=r,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function i(e){var t=v(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.Client,s=e.hprose.Future,u=e.hprose.BytesIO,c=e.TimeoutError,f=e.location!==t&&"file:"===e.location.protocol,l=e.XMLHttpRequest,h="undefined"!=typeof l,p=!f&&h&&"withCredentials"in new l,v=e.hprose.parseuri;Object.defineProperty(n,"create",{value:o}),e.hprose.HttpClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,i,o){function f(){return m<2147483647?++m:m=0}function h(e,t){var r=new a;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var r=new a(e.data),n=r.readInt32BE(),i=T[n];if(delete T[n],i!==t&&(--b,i.resolve(r.read(r.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){h(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new u,O=new l(E.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=r,O.onclose=g}function d(e,t){var r=f(),n=new u;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof c})),null!==O&&O.readyState!==l.CLOSING&&O.readyState!==l.CLOSED||y(),b<100?(++b,j.then(function(){h(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=r,O.onmessage=r,O.onclose=r,O.close())}if("undefined"==typeof l)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==n)return new n(e,i,o);s.call(this,e,i,o);var m=0,b=0,T=[],_=[],j=null,O=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function i(e){var t=f(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function o(e,t,r){if("string"==typeof e)i(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){i(e)})}return new n(e,t,r)}var a=e.hprose.BytesIO,s=e.hprose.Client,u=e.hprose.Future,c=e.TimeoutError,f=e.hprose.parseuri,l=e.WebSocket||e.MozWebSocket;Object.defineProperty(n,"create",{value:o}),e.hprose.WebSocketClient=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e){var t=s[e.socketId];t.onreceive(e.data)}function i(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function o(){null===u&&(u=e.chrome.sockets.tcp,u.onReceive.addListener(n),u.onReceiveError.addListener(i)),this.socketId=new a,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var a=e.hprose.Future,s={},u=null;Object.defineProperties(o.prototype,{connect:{value:function(e,t,r){var n=this;u.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&u.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())}),"keepAlive"in r&&u.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose())})),r&&r.tls?u.setPaused(i.socketId,!0,function(){u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):u.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):u.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),u.disconnect(i.socketId),u.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new a;return this.socketId.then(function(n){u.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){u.disconnect(t),u.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){u.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.ChromeTcpSocket=o}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(){null===f&&(f=e.api.require("socketManager")),this.socketId=new i,this.connected=!1,this.timeid=t,this.onclose=r,this.onconnect=r,this.onreceive=r,this.onerror=r}var i=e.hprose.Future,o=e.atob,a=e.btoa,s=e.hprose.toUint8Array,u=e.hprose.toBinaryString,c={},f=null;Object.defineProperties(n.prototype,{connect:{value:function(e,t,r){var n=this;f.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(o(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){c[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new i;return this.socketId.then(function(n){f.write({sid:n,data:a(u(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){f.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete c[t]})}},ref:{value:r},unref:{value:r},clearTimeout:{value:function(){this.timeid!==t&&e.clearTimeout(this.timeid)}},setTimeout:{value:function(t,r){this.clearTimeout(),this.timeid=e.setTimeout(r,t)}}}),e.hprose.APICloudTcpSocket=n}(this||[eval][0]("this")),function(e,t){"use strict";function r(){}function n(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,s=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===s&&i.length>=o&&(s=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),s),o=4,s=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=s}}function i(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function o(e){i.call(this,e)}function a(e){i.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function u(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function p(){return T}function g(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new v;return m?(null!==_&&_.uri===d.uri||(_=new o(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new a(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);h.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:u,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:p,set:g},sendAndReceive:{value:y}})}function u(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function c(e,t,r){if("string"==typeof e)u(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){u(e)})}return new s(e,t,r)}var f=e.hprose.ChromeTcpSocket,l=e.hprose.APICloudTcpSocket,h=e.hprose.Client,p=e.hprose.BytesIO,v=e.hprose.Future,g=e.TimeoutError,y=e.hprose.parseuri;Object.defineProperties(i.prototype,{create:{value:function(){var t,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)t=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");t=!0}var a;if(e.chrome&&e.chrome.sockets&&e.chrome.sockets.tcp)a=new f;else{if(!e.api||!e.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new l}var s=this;return a.connect(i,o,{persistent:!0,tls:t,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--s.size},++this.size,a}}}),o.prototype=Object.create(i.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},n(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(r,n){r.timeoutIds[n]!==t&&(e.clearTimeout(r.timeoutIds[n]),delete r.timeoutIds[n]),delete r.futures[n],--r.count,this.sendNext(r)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(t,r,n,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutIds[n]=e.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new g("timeout"))},s)),o.count++,o.futures[n]=r;var u=t.length,c=new p(8+u);c.writeInt32BE(2147483648|u),c.writeInt32BE(n),c.write(t),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(n){n.onreceive=r,n.onerror=r,n.timeoutId!==t&&(e.clearTimeout(n.timeoutId),delete n.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(t,r,i,o){var a=this,s=i.timeout;s>0&&(o.timeoutId=e.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new g("timeout"))},s)),n(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var u=t.length,c=new p(4+u);c.writeInt32BE(u),c.write(t),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?a.stringify(t):a.stringify(t[0])},e.hprose.JSONRPCClientFilter=t}(this||[eval][0]("this")),function(e){"use strict";e.hprose.common={Completer:e.hprose.Completer,Future:e.hprose.Future,ResultMode:e.hprose.ResultMode},e.hprose.io={BytesIO:e.hprose.BytesIO,ClassManager:e.hprose.ClassManager,Tags:e.hprose.Tags,RawReader:e.hprose.RawReader,Reader:e.hprose.Reader,Writer:e.hprose.Writer,Formatter:e.hprose.Formatter},e.hprose.client={Client:e.hprose.Client,HttpClient:e.hprose.HttpClient,TcpClient:e.hprose.TcpClient,WebSocketClient:e.hprose.WebSocketClient},e.hprose.filter={JSONRPCClientFilter:e.hprose.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e.hprose):define.amd&&define("hprose",[],function(){return e.hprose})),"object"==typeof module&&(module.exports=e.hprose)}(this||[eval][0]("this")),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),s=new h(i||[]);return a._invoke=c(e,r,s),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(e){this.arg=e}function u(e){function t(n,i,o,a){var u=r(e[n],e,i);if("throw"!==u.type){var c=u.arg,f=c.value;return f instanceof s?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(u.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var s=n.delegate;if(s){if("return"===o||"throw"===o&&s.iterator[o]===g){n.delegate=null;var u=s.iterator.return;if(u){var c=r(u,s.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(s.iterator[o],s.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[s.resultName]=f.value,n.next=s.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:j;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(a&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),v=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=v,a+=v,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&J(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return"function"==typeof e.then}function a(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return $(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function u(e){var t=new n;return t.reject(e),t}function s(e){var t=new n;return t.resolve(e),t}function c(e){try{var t=e();return s(t)}catch(e){return u(e)}}function f(e){var t=new n;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){O(e).then(function(e){i[t]=e,0===--r&&o.resolve(i)},o.reject)}),o})}function v(){return h(arguments)}function p(e){return e=o(e)?e:s(e),e.then(function(e){var t=new n;return Array.forEach(e,function(e){O(e).fill(t)}),t})}function g(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new n;return Array.forEach(e,function(e,t){O(e).then(o.resolve,function(e){i[t]=e,0===--r&&o.reject(i)})}),o})}function y(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){var n=O(e);n.whenComplete(function(){i[t]=n.inspect(),0===--r&&o.resolve(i)})}),o})}function d(e){var t=function(){return this}(),r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function b(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||m(t.prototype))}function T(e){if(b(e)||m(e))return S(e);var t=function(){return this}(),r=new n;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?r.reject(e):r.resolve(e):e?r.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void r.resolve(t))}),r}function _(e){return function(){var t=Array.slice(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function j(e){return function(){var t=Array.slice(arguments,0),r=new n;t.push(function(e,t){return arguments.length<2?e instanceof Error?r.reject(e):r.resolve(e):e?r.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void r.resolve(t))});try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function O(e){return e?o(e)?e:b(e)||m(e)?S(e):s(e):s(e)}function S(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){return u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?T(e.value):O(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var u=new n;return e&&"function"==typeof e.next?(t(),u):u.resolve(e)}function E(e,t){return function(){return t=t||this,h(arguments).then(function(r){var n=e.apply(t,r);return b(n)||m(n)?S.call(t,n):n})}}function B(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.forEach(t,r)})}function A(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.every(t,r)})}function k(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.some(t,r)})}function C(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.filter(t,r)})}function I(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.map(t,r)})}function x(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function R(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function P(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function M(e,t,n){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function U(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function L(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.find(t,r)})}function N(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.findIndex(t,r)})}function F(e,t,r){J(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function W(e,t,r){e?F(e,t,r):t.resolve(r)}function D(e,t,r){e?F(e,t,r):t.reject(r)}function z(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==H}}})}function q(e){n.call(this),e(this.resolve,this.reject)}var H=0,G=1,Q=2,Y="Promise"in t,J=t.setImmediate,$=t.setTimeout,K=t.clearTimeout,V=t.TimeoutError;Object.defineProperties(n,{delayed:{value:a},error:{value:u},sync:{value:c},value:{value:s},all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u},promise:{value:f},isFuture:{value:i},isPromise:{value:o},toPromise:{value:O},join:{value:v},any:{value:g},settle:{value:y},attempt:{value:d},run:{value:w},thunkify:{value:_},promisify:{value:j},co:{value:S},wrap:{value:E},forEach:{value:B},every:{value:A},some:{value:k},filter:{value:C},map:{value:I},reduce:{value:x},reduceRight:{value:R},indexOf:{value:P},lastIndexOf:{value:M},includes:{value:U},find:{value:L},findIndex:{value:N}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:H,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===H){this._state=G,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();W(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===H){this._state=Q,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();D(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===G?W(e,r,this._value):this._state===Q?D(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){J(function(){throw e})})}},inspect:{value:function(){switch(this._state){case H:return{state:"pending"};case G:return{state:"fulfilled",value:this._value};case Q:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=$(function(){r.reject(t||new V("timeout"))},e);return this.whenComplete(function(){K(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){$(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?x(this,e,t):x(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?R(this,e,t):R(this,e)}},indexOf:{value:function(e,t){return P(this,e,t)}},lastIndexOf:{value:function(e,t){return M(this,e,t)}},includes:{value:function(e,t){return U(this,e,t)}},find:{value:function(e,t){return L(this,e,t)}},findIndex:{value:function(e,t){return N(this,e,t)}}}),e.Future=n,e.thunkify=_,e.promisify=j,e.co=S,e.co.wrap=e.wrap=E,e.Completer=z,e.resolved=s,e.rejected=u,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},Y||(q.prototype=Object.create(n.prototype),q.prototype.constructor=n,Object.defineProperties(q,{all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u}}),t.Promise=q)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[v,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,v=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?v:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return v.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?v:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length, +this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function v(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function p(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?v.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):v.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?v.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),v.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),v=u.readByte();if(v===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),v=u.readByte(),v===s.TagArgument){l.reset();var p=l.readList();C(p,t),v=u.readByte()}}else v===s.TagError&&(a=new Error(l.readString()),v=u.readByte());v!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=v.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return v.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),v.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var v=null,p=null,g=e[++o].context.mode;if(g>=c.Raw&&(v=new f),l===s.TagResult){if(g===c.Serialized?v=u.readRaw():g>=c.Raw?(v.writeByte(s.TagResult),v.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),v=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)v.writeByte(s.TagArgument),v.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(v.writeByte(s.TagError),v.write(u.readRaw())):(u.reset(),p=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&v.writeByte(s.TagEnd),e[o].result=v.bytes):e[o].result=v,e[o].error=p}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return v.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return v.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=v.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function ve(){return Je}function pe(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else v.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return v.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},p)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new v,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=p,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var vt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),vt}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:ve,set:pe},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:vt},beforeFilter:{value:pt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,v=e.Future,p=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){ +throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?v(e,r):l(e,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,v="undefined"!=typeof h,p=!l&&v&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function v(e){j.resolve(e)}function p(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=v,O.onmessage=p,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function p(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);v.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:p},sendAndReceive:{value:y}})}function c(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,v=e.Client,p=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new p(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new p(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===S){if("throw"===o)throw a;return p()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function v(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),u=y.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),E}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:v(e),resultName:t,nextLoc:r},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 8c457bb..0d06e07 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQBGTAEAAAAAAAAQmYqm/+79+uF6wQ7yA/9nZiht3AzuFS3va6nYBT9HOKg/kUnkX8PG7WjQ6uQrVmBjEeQng7HJNo0yUL7XIyi/M0QhGpoIRxtz+Lt1rLx0eeNgRF6zc2hSskkgtUljxCYZLONNgVz+73QVu90dLWcqSeBhvtOaj2kEaEVesE/Xmhgw2GbjmK+96SOJ+H8kzfRkFhFlqBFA3PCSDlbFUq9OTl4poW23kmqDcPMKuL6blxcl3/yuMOty9VSApnGydcInGtwg67hBIZzsBE2XaMbnuzkuArePEUqkm+kVqCQTHNeoIMoHnfp1/+1J1Q6i5vdlKEBgd+FSE8WWphSSUDEJpEGDY8zKwISHThHCiBOXa8Gq5oDmDvNFs2TY0lZlznHGMZG4+L/t9GjcDP3WNCSAp+5Buq+HLmA5wnOUxip0xbviAR43GvfFzBGxd+ibsccCkqvqPggRDH7cIkECpYcLaCrCUUHX0dOB0TpqQLIouiWmX9gVE1GRGJIliCvBavsIyOVBfUiyNRx2VJgUiWlQyrVQBqlZfdQsmuZMHzZ1G63kCbO3ftUvFPLX7aZO7QufTUGzWDPfIDJfVjEaosAp0l2td/92j9NG6FFh1ziyYfr/Ho2FxrEpS+pwaa5SLeDKQuP8deoNCgD1von9yIcm6Ew8zqL8jApfY/dP4zfaTC7ohN3yXZF0NWlPLxkuVve8foNjB+OGsF79u5NjY6Bz/S+c+J3sAIElMhcJ/pEHaBZGNLKnfSB+PA+OMLF1YK6c2eiKWUwpRTPTLJHlMnDbIoxxBH9ibfLpPMoxi1wPpouDLNLQ9cwgETnpFxTakir8IK66CxQaikWDeuEG/68GbVj9kw0mBdhXWiWlnUrZcxB0iqo+glyWm2Bo3rIhXEXGl6Xm8XaURwcZK+4Cv6pS+mttW7pQeF6t6l6n258zwJoxLARlWGnoSTD6IMFfOUr0xh4HazqAiSaDd/Z0/Xc2t1rWVO1RwCUEJe3reP9rG4Dea52F4A705HLlrGja3AAEDGSbYmoASbI3mGZSIgFEagwDCl3e0ClGgAwwwSVSL7k8hJoSV2XbL71E/KtbLET1AU5lan3hHEqbw+fNOUmwZVERjmdwsarAryZGTGMM79oBA3szk3KMHUXlWnsLXUdfXSXtxDXEhlfF8z5qMSjzv0ALzH6RuBMXqSH1FVTR722Es/FG5ac1IAB+nfrD00i/KhDNW8sj0aMWCkipQCbuKkyUzCx2cyYNrjlyqKXlAhrFv2saop2SfPSPgRHF2+0Sbu992uviFxYLEAMJJwJ1UZ6eN9BhQ30sdlih7m6iw2Li+SkBo0vRXzBpXaeYoLLbGIaIGmjtNvH56XUH5+nFrFBw6GePt1Apq0x86M1UMuHfUuAvZei7z6+xzd9yh+agdg4X+2mDM04igzImAvBlDYqozZAoiMp2vUpZ3JLm6DX/TUeJltbLWmQRQxYW78kRT23f4vuSs5RWMYJUT2j+3EgjMcDAEuGBkAWnHusyhAMez3rPv31pP2q/JAA9EMHiE0v0cU669JjTC9e83DDeL2AxUOP432aCNBoNzKrdlFMYvWl3We7e/FCOAVB42gUQ7AGDQaodZWYS6kUZdsNSK5/5w9PakKKmBKB3rl6TpbZFr9ciy5gyNok07LRcpXX3zz0bFWGLwLycFeixSP8dKInKPASykR8mt3rc4Snn/4E9YSq8pofYmg0egue9L7X3V9QnhtZXMi8s1VGmdL19IPA0PHxqhRp4KLfUIVBClVIAh3RH8Sq2ejA7WDZGAXJFjbUgAfRZveHjVmrTNap6Ndqhmh/iLDjVsXtuJRs9xIfsUXR2O7xWULw1Qk2FcRZzBN9hJReiMUoW7I1WYKENoxHUOkbvXLm1iPHizpc//QaSgNUwzeqzkBFEotgCF8IYVUOrlHObqGtf77r2LEB5TJJdOoCgHJPtovt9A0Q1CC/893sSQcKa01At1aquTSanTVtv8LoeDlhzJeOX6jQRouPn9tve7k3ZiF86FQKGTH1/Tj3rKujCwSKpiTFTSuVGTPUSVJQ7BmGZ60qL8CB4DniSmjYkbfrUpfxAtOFCL8bYXR5RZqMgZa44v24j3VYGhvyr41SVf4+7i0BppEpV9dYUHyRbjXnVFsF6vvbp2kSiaeMxkywgR2I2VtaBqQNDMJ4weo88tdOlWZ7uidDSBEKOspdt1Xc3n26KbeJ22KI2QAy00M9uwLJte08Ckdtqfv+55tU8UF2eOJJfXur4EI4XEq4RzKhTVfbSeqo7PULjIEdVQonWlvhnq1A66/P/vkzXI66LruwLp8ZjyWH/zfFFL5PSDYOg+YeISXWdhfxByxI5KxAvp0AhmHM/v33DEPBuy45YhNJU4ruYhF9A/17jSagqJyDKNLM8R4xAYM2AeCYaO/1OSGR14bx5N4D8AzY8CgxXbjLt8vLEqexTIVei2QFQM8sFGrGjI/NS67pcphZdUp3oXa3+sCcBhkCEOxys4NhvRSXpTjAmxtGITzoZryHOwysBgzBZigjXMVZfSeHLveJLS5eDFPZp5/FfjsXt/KYAxlUVE8SijRN2p1B1mLGQfHBNqAKnOr06Mk353SbiNSdyd4Kvo5vqYDwv1n/l9uTSO2g2l/5jo5VQZ2w2xty2Dk5ndi5jrvk2Fva9eFljYZxAO1XK8m1Qb9lUw5VDQMr32D+Y7AL/NCi3qfgGRoWU6mZeyLblqz4ulk2Vmxocy5ucSOWDOyQmKL4Gg1oRwaiysiWqbUPFhBO7DryW5b427fGdflP4HJEc0b8ZGF0LJ0Z7jLJMFIn0fs5iNriJLqJXZibk8ow1nGi5IS3D508VqavUiRuZ8xrz/jI+VBEHTWfWgZLYUPhKob9NcUOaDVXbjusaQHVdqtyoB2hXipgCXDRggOGKHsSgTJXVQBAtjeo7ZJJamvXg4UY7HzZmkwskwEPPCtjD18NhuWnHm0+8fU7nFsmsh4qt3yTURJIlSCzIpx2ahX2sJnShK1RorgnUGsalx3LzAbqtBBXw/typZNvnaKMhMtl70n9ozR9mnF7pO94qXhLdfjkW4u4Xw12QaAuCwdxBRp1kwbQRndze2NuUgG+z+zxHCHVcOeVgYUrBdDInOZ5WWHn0T/MLQu+9dTtNdpgm8w4tisqecW5RzIWC7dxFqR/BQcPw5DLvP5BZTw4OGGan/Vp49zV2lNPREmlzX/kuW12tmcU4rlmXTmaDNILjeOU8XVc8vEVhfJKjpW1O+93XZtMzoISeI0hw+LzUqmz1xgihai6KUdHT1c032BR3c/TbUagKrES8+M31pzM9FfySEPpdLSrTd7g+Zpw/IJ32xarat4h+m7+6AIfB8dcClj2sMI8CO/bOTk/eNMr8tTxcjN8ajP068rNkF76mxHr5xmUCJV6Q+y9J/4JqBZPBg5GIpXDbx/ztfuRU0jcJDxUh4QE1CGciryYmWgyi5WjDiGIp+uJlkgCyDPv+52KMZTsCE9O+OLwpnDkE6WYl1xdmwTsc3S5Z69eEm1jXgRzIm7UO3TXQed7QmnP5WZWmgADj3WFRhXrkVatqsL/L+Vrs+NBChGT23aDyl2Ydz2ngPKydguowg+7rz/vWL4uk3vp6048C2sHYhcu5/sgUBcBsVKTva7CtznlRJZWXqSRxVy5+GjC/YIuPl8GbfY2gNaLMliW+mZ+x9/m1RVofE2wFttGeTZ/ALnql8tkqzE8dRV8zjc9Y7g5cjk5zb+mPhW+PFikPFFlCsNFoTv+Of7UvFGWLOV/XnGKVa8W3H/Rt62U3fKRfWJw+lfyz3fK7u5QhUKNRsDwHerj4e3OADrAmMnS11NeVKdrRqohJ+zSUzl8pCjWzLWv+ihY1ge+tivr+VlKzR2Hj58KpBoMfyZkAAD5ZTAd/8h5rwq1oZi5EE75tQ06VV4MiUyvo3BqpR0uPlc5Wc5ZMhpYAHdzPoGS5OspYt643xZmLoB8TFBRKyqIrdm7KUg2ihR36HQpRG7Qa/RNOyHIsqR0t+4RuaUm4WzgNCIH/hVOWThEUpdLAW6PIH5IM2m4L6qW19pCJwnFeMVCw++q8D1nHT4XDxlngmKmkQeWBgTncF5CYW611GYIIJ2Pjmb2wsVSlJCsFV4PfieeNFppui9BVH/3hHDngrize0YG09kMKlINXmOnfJlFZi38SXRTzqrUvhw9Kw2TWUyKzbKTWtNQpf09V0dQptuSaCbIPyOUOgA+fDEr/M4nXWdMu564kbQEXtC3ph+BuJQvu8ApURPIH0QrGIXoaPjWdCxWujrbE7Ji1NnveGsTjl2EvK6vQN5HCGk9t8tVrBtTznczT/lXYaMYslEZ55fXbVY0cl9W4t6KAjEJtVuBNXiJD0fhsG4w/1BqQJnyxXCeleyTq5ZDtCrZXWJ6dKRY2vOpRAaZRPBDCchYVclLPI2gI9u5kLTvHZs5VhZbFYUbRl3v4wR8xo28zVgneBARdox+pqfL5HYNzfwijXCh4kIIq/5+xqbmA3YH0M6tEoZkt6BJCYDaXuxTP16dtD8d4qz9vLpVHBl3++epcm9bKSIGbMFK61g1JINw8PVFZ5FjvR5ggHWuzM/pHvniEb+w/xQmkpB1xrCMXCvncjbe1lWSlbgj0Xu86cjtfaG+awuulraXI7zmpTUX6gtgRWz1YybPcHJ81nqI+j5ycJw+HXJELPFCaaue59VQ8pTYCqsioRIah9MzSe5fkHbHQZIP6m55h2b76NLrcc08JwGihLnVjlWLTsvSHtT8gguiI6WXf7VgB2Hsab5Ifg3RJMklLpohEAbLlpLrdo1mjSNoLJ3iRtnRviVsMvEZHTC/sS7B2zVqoRW98Og948KHMrIktz1fn6dc3MDjeKF61rLfrXch9D5C+8LjzxzPyNRv2i5g4513JR+Mhc9Y4xr+TF255SQTtUbh78HOVXmUsOau5aQ0xqJesqiTvU3OyJjS+L6c6CXp8ob4HNKTpLlxquPoVUnKD1sT50WjJDMvncKe+JBUxu6Rds5MmDMK4QlLe0UJQmWPyb6dBSPh8MvCZURPhYL3BwZZOfR8McXbEjlG0G8xeUudWCIPqf6do7QPiNLY8XbHd3qWiBqKmQUZQKjEsAvQ9iXIaeyZRkvG6LweuXAVpuo861RGlO3HObqgB2va9ig8BB5AKZzF08wFPySxrs9LsUbI82YxXM5DglSc5v/x5xQj5AfMnuXPZtk1b5e72Jk/2RgIwChMVm1oflKkiUj1jy9bxe5dO1JPXEKPPusX3pCge06XHVL+/VzsGWWwxh5rdgdVyGJTpTNJhTvXMABQPado4IB42c7hap+ZEnGZ3eY6fjiTcLo4TY8gDeNX1ek2zeMAsZizQ/mpxIaS2omTccgxbuV/dzfjWb0dbyK3wfWntpV1IMozJ7V5P776lYohNAWBKKtbi9TZr00yPxUVRHb7UryLZRFY32I9sbeaRo8GeRpFlXfyWizVgeqpdv4kjo6ofY2t9iEJtGBp+K90r7pVphoSZ9hV9G2lten5r2UOO85hDl2YRKvp9UkIB2hT4j0uWdw+dM8qnWR1GbSYEvjrmjvdFJ/jbzuD8TizAJ53mDS2XYt+fHrywVOE9smzzXlptbrG2H1VfP+xsfTlRLGQTEPFHgFx68NnWyEiRPQ0FtcdXgkLvYd4ehU7GNotp3vyglK04ds3MjQJutSn6Vd2X2yXosxoXWWunyU98pg7WkxNAXWULVU4HhotAdB+5//a+oq36Nb5LYt9myeHwz7U0juxRN+Tak+GXnuod/u9l6SKkhvIbAxRv37n9vfgtmGCvRiA5MFe3xDIRNn36OE0P2Lu5t+cDyLofodAL7FceYGoHTVNgftWwCOpPugy2Pc/qMFn7RibdVvmhI2MY6WzMvJyF8yJTt2UXDDCeW5xhcWGKpILiYSjDrzZ8SxqTXopjDeChbXiRUaXh26GxqOBc3t8i1sHhRYl+sOavtXE3ULkovL40JgSexxdlcSDBQDvPhiY/a6ZgR04X7d9gCkwECCMULsl101fUDGZ4bqkG9NW7vnujnRxtW8lXKMcCvMNZW46XyiuoBQGze3DIjeRhDFl+qPv1kgxfxPdxgcx/7tV1BGzkJ+0lQm/KzuCPssRWYoZ/FQ3wRESdJTzckneCXTAOPGSyaZl9Xc+BDLBH5nIjiLnuImD1l3uiRtp8qtH1BMKYcnAIOJcSetSa24CkbmxKR0QqT04M4XniLi+vpp80RvdpqQMlXug3BJc8eeghHm4+7OtfdAB3OBnIpOEkaKoi9rUCjJ/iK1FaJ1DdpJE3hY4MB5SHGWeg4jks5q6EWf/fBwUu5YYaaAYSLdyqVE49/ILLjP/GFHNYGgVWc/ObgzXp49upyiOMfG0WgDgeRNs498lLVLUA2GBeXHmpM76NJI/VIgGx7FT+avP/bwdPk4/gUXRvMeZ5pnmd+V0VwcAjbZ7H3N3bHH5R/kBDMNQb4XyzwTqg1nSNah+1lNA2PBgEuqmcLJdCHCiftkCj8tTH0O87qArnZtBIMJhATn/ZtWoJAz7xUR9WB1OvMnKp7QeXiDOfKdkTC2yOUtgqpxVqxxhJpGTcuGrU9RguUDWGhK06iY7OGsPCfloykGqQl/yeLXSbym4fR5hzA5sR6aKke99JwKaGhdGcMKuoH4spd2NKT2dU0NJgG03PWTJmvAkeZYczV63IbqTSCev5aQGzVrqK8gpOsS6KcV6VSua7ETdctPRS2s/Y8+A6bl+Z4wbFbSqnRojE7V2vPC+W6rSYMYK9Oe7fzsAPQGm5EzebsA7QSPcqUYid31YkVXaBtIaKHMErgDIeFowx7+gJsxNVAZLMmank/N6e2jzk3T9EfaZjPnFl7Xte/xuhVExZf+3AaiQOMpWSHnykaFY7OaffeSYSlPrJeqfyVRP5gjUl/yE8As8WcQUkGxmX1mFnrGr0hJUyu+Tv0pd1cosvTUHMbPSp024gtmZ/Ux+lqUmxsmYY4PPSeAmx4OzNAOsvcFljVbRh40Kz3HxR6IBo48psZQyLO+NNjMspoTjoL4W9sCpuN5p/kgPHgV6EPaCOGEjKt62fG3KvsDnbFevRo6MctmM3HbTmcucIXBT8MuLgOGo25lDv7yUS+JwQCAI0Hs2YToVBAW6M6jUmBaljF77Fa1pOhlmNwt2dyqpVmwddbLCK4c0+Zv54YCkKnF3LOQH7Bv9+dfAsXyo7TUIUxblpRaae8K/heAXQ/XZtDCuGx8c+PFTpmqWI3RML65T5fBJ2H4sqILNqTp7c+2Fms9iA+5FtUFuBibE0VDUamW6rAo8GSHjoJwBJzOtMXXCyGkNIZ342wIDn5qaghO6kwR0h0Bgi25e5zjbVa8mNEddsHvC5b3EJ2x2C0OhL+ICJkHiFbXkFnb/2q6nQSb1rOL4lbHMOCSdu/O/LmYTH3HRRdVO7Y/Kl0ru7IpZ2U/kf5uezxoSkR4US1wPRJVXvNR0nn6+MWgzLK/iWSOm3Z7NYTgL/LYaar0fKk/4czYOlz4I45LPFi1WCmW3vboq+x5oDtYLVvWgi6Ku8kq51aRW7BUMKxuUIOjdmAAe489ixcoEVVahu8BPHptYWA8UCtz7pnNhgSTjshucoeYaSFUdlEtIFB8PZL/h451uf6nqioRhYx9h9FncgaGyDA47OKRbFvgnmsCI7yGvmVwkxW/50FU05+GFSyMLhhryGS/GfQWwILCmmK7HZ9tBcQ5+txlX+zLTD3tQSkRAzc0byF5x68MQ+gPlObu2TzdXnKaY9q1o5TsR83+pfpzGHTzScdHF3WsjFAJBCKlXJWfLLtELI1LPDOomUuAvTc5hUyzFfTse9Uzgt5Bu4bLf6at3E8kSen2/TQOKawDLCtLHCp8tLOy25T23cXdVO4160eQjAM9qDQ2YVHuQPBs/Zc9ZtVfaly7bRv/hhi3ylhcSnb2UonpX8FiJEGX6NG5VVMCsuGe1StzaGyEykoPza56klLZOWVX65LzM5VNJ4D0+IKvdBYmTBKb+3SWAd0CpJwJC5dXkkhjBSyPbWtRAOZM8TEw+8A+0JBrepRzlAUY31iOMczIE0EK+3AcF/Q8Zr6d5KGwpQqKRJ0n884aznURvN7CwMZp2zaM+eaR2g7NSpM1G6sRtT3qGy6FYiEem45vn/0YmuPpZHdMF07xLS25nP+BCcwylR3lZJd193cJyCgBO+Unzhs+/waTyfhpklDE4TB+iZAlTDiBLVphQBy3CNGFLWifjRZMf3gGyZZ1TwTLh7C/341GR5/5B3jchOPwerq0UiZgCdXCpVbgE7QmrlTAKeLL1jIkH2njO/N2SjD4oWk8q2xL0L28egBoY0O0avznMK7o+UqawDRWeEjsOEyaoZn/qNp6lE5QSYIG0/XICC10pnGXyx7sisb+mL8IPLcMehPo9RCvA/DchgkXLGHMZDg6EaCTdNdq2STzksRJdQjQOAipjjtRSR/+FJpu3zKtY1dzGm1LmE/xN/Hvyr6We1UAb2arh2/+NSG0XNCmVXbQNOljGoOh91qx61+3XsG5p2rB15/gKCuhxc8QmWuSwvovM86DcGlFgGaNfcJmHRmyFGJaqEAp65S3Q91ifsltINx1IDijFMaylMAj51QXrKBKjbYKlZC0lQqCBZFmoBjLqIvAu8do8Pg41J9/Xnue/JUH0bze7aRaAtymtZJsF3SoexKfoMFj+ABBhh1xTpLzb6WSGSW4XSchKfiy8U219q/HqwBQytNO8lojdHIpfxe/Rac3iNPnU1j7ixZ7DSNi2qnH+qMGss8Q7DK1aZzRm0ngm7SY6yDvqh2HDClBEjquB5wiVRKQ1GjE416m0UMi9TS9uWDcpBvUVnmBqm6ig/hUsTQSPcKjDVOpJunRdaXHQQQ7HEsn+L59lXhUC08kZSpeID4VafO5coOalt9eGkdMEfzI2yzTbLTKZopshCjBz1RMoHqPo2wkUgCY4bPwrsM9SLp5EdxT9J0QZ7v5XsezmXkOPYk3SP58u/M7mmrYdatIGG9/NyyFPkGfycanAJ+hZBYoOyng+PH1P2po3Pxzw0kbOy8k/yr6ZlbOqwbUSOVAy28eApoFVaujDe+1HzXVlO8EFBh3O9LFoarsIr+skFFUWsqhEyBv9fhYkIgkRmf1+9LEy6fFqhOLoBzMZETCEnchdCz8t4iHrVl0h4E8YIiVux6YuDbMUU4HhQeiMjYuCtwbYYZYMvvHCE4Hc/t5falBEORh9hx+/N97Ium8CRmemdmce4Tufr3TnNyb/XeUDdfombyBg1TzoetDl80aQvX5In75jjC8oi1mDv1ZqQyeK4DHB/7sIeWQZ20mHDHgddbT4dDBAPZv/cvGuXmecQShjVrriy7H7BiXBgoW8dWipOXeBbontZ8q7usHLoiOjq7ig6vK7YyYeMiv/D8XP3Dq+sZQiJijST+KXqWtzhlI+CgYxCml3xFMRSFxuN92leW9BDxaU5tHVr2MfW2iv9fhpZCkJ0Ae9X0Zgf2FswL79IrQxDHsPdtcICxRrcOft7Bei4MXBniDjLiwVAcQ97/E43XOCh4CFsrvxunkcgKIbJOhvMCsshW+VChyFihk7Lj45izswcFtmQEGDhSu41UY2XHmDC0EXrHy/B2g0DEPn9hU1t+ITk5Rkg2sDlUyzoRfftG6KJ9bsxUr5Q4nD85JBR3zpd9RDFl5vc/xOxbbHqFVWEgJcxK2lrBQBcdZThHNd0SQUlXZ8FzBWnGsTzE9a/lUtBsKrlJ8lIDw1kZUwHGHuVB5SZh4DBPOFyjOem4iBksGB3z6gV5gQxqVuPsrLixa5gzbtGPBCXgjPCHRGO5CCEiMxprjT/p29fEtK9a52IMhJWN9kVmRCTZjQVRyoY7GDe0nYhOIhbwnKxZ1k9lBgrDZgbEJDGmV4QJeRJe7SefrU5yljkjkNPM1wZJuKUKzNiTlYcJmyCuRVGy+pxtO3p3inqpc/I2LlerMq3dym7+MQ5k7p1eSNL16pXDRJmXmXM7hwGJiOXTQAY98mzyMCrvwzexmtUwr8VxvhuEdHsiLG5FTTkX9k27uBlYIRarHA3FPnxRzrjOEIgdeZwCBugNTqcRKfQnjbClEqXQiDhAiZcjKRMxIiZmBuJzm4vQbkNRRCikdBmJzkOR4U/A/BxvFPau7ZA/kfSh0tytBSt/7ePvgHxZAbZ8rAAlwgIyQnoo/X8eORzSYaO8NVMXwE079xOhJbztA55JD5BsiZbuMBogYumKY3MSvSqJihyx6NQlRQnemQvVs6ADdAL+vP3gM49JhOdy6BnP/O5pbhn0vcYlkvSYjp+xqCyDg4715yKmMSvxTa2FifRzRP8oB1QJPBLSzKQL3E6S/3B1zcBafAUVIJBkLPkDLfKoc8pWo/PrdWCqIzQGbrMuhP63rbeu6+qMUarkT0HrJmjjWYCmiTi3VB4bfEOHOXIKVpaMhfXtRfqa4wrmVEAvktDrYqMoL6L9MZcZksD0kaIwvVrEahWsgnGTY0TnWKnqbYn4fukAP0uIHRYkHTW8TUyVSbquV0jCJhOOesdueFB7Lzwia1uhvmCp1G8Dqn5scw44LbD6+NNlBI4BR/96lm1FlKbjsZ4wZm8ApEmV0Uf9TqvYx761DjDOIhNPz5sxamWkse2moiEQMBrPhaW1L/Y7ytFlcoE5ZT464eMuBcNZxqX5KGeWgBetoFwp6h1WM3WMoOt37pT/fiVhaIrQeKb5He1pbKHtzBbo9rEn9q3YHlo6AsNHTbrQs5kmi6iX0s4oZGcYSvvoGcBgzTFSawS3TmpZ0B1t59t+Nj9CEN2hktNDBqOZWZdhxs+nUuXvv/zq8R/MygQndu5oo3pVxuaQiWxat2mUE3yB1/d8wKXkP2Gj+W/3UESSeNiBJa2t+Gl/loXrzTTOJxxsTDDElSyOHiFGePIMSFx30nEAzMRuVqUhpxoLt4bGZ1zkYrBdCXwDKS7ssYOpI4z2uaLEWGQxK/VPLAPOyvm7D2Uqw4tbzwE4gloSUlRAwgFW4YM954gnygR9wfcRiBlGaKq1PW016JDvxoSqQLMfwSq2EciVcQyM3iVOYFtV6Sfh0ZNQccUYpaV4h/t0X/WMB4qaPblnYq8mV3JmKTZbHmSWVuR3JYt7RXzWXunnmybJ3SW4ivGScQbrD7oq3L5+loVa/TCAqlZjzqsuWGh7LtML5Dk+glGkg0Wt5IcC3FvORScc/9NcQ+mOEIQ+hmodTvsTdHlgIG6IGGTiB4ISHnEqkp41B5qxEPDmThxidESiy8w2vgwVRRtOvLz4I2Mxo7hjawsgLlfbAPX+AajuT45Rm8MM7QaQruXKO4leBvkMDbkzdXr1EyU27CXqyUgdSgWfm+8UqazNpu/NpXWPgBcSVB3/1TGonKB3lqRKjlfobEf7oyzkVRSvHOFTIxrgDlj230mOWJQEnvmttrOYiHyZ4BnHefF/vhxrbs7WvUv01CRL5Zr5kmeV8h1mLSEDMNhIGKu1ed1UOOc6qyYW0h/t5Pa9E153rtXyiqj9AyQJz15eo3a88iirBa4OP2h8q2MyNMq6ybsGMwjNcREcP+zWvCUGJnv51Vmn9WAOr5BFvVnREsHAfyCbZfceHyLIObkYcJ2mORliOBPP5tN11Hv3cEXJeC05g758rrPbt6+hwJZrmUwBJhpjm4AOrEZrtSac1rI8pb4BjtPF1G1Lz+2jcwGDLUJiaJeT89bwhvIIVAb+4/rXS4yLDm/hXTzYe96JrBZjx8CT10BiMT/LX59qKhr6jpZjzwz7mwS3/yK3Kld7JMgiM+W+qFAdZ58BENxOyx+6rlUcQeuB9oHKcwRF5e04Ncx570+xz5y6un34kj0LArhfds7hZ2Y84y8gDAwCpMUJ0ZWENqWvgUT4E0AOw0TB+mZC7wGdHY2rwyfSoXt0XqAQ8p4wwEWg2rwcZ7W94xI05PqYV4LfuMtgoA7yYyOErZX0f5vzK8cgAYu5E2S68CBjAx0j5kc4W9mppC7A0AF0T8vnc8xRNgiiTZ5cIT+eN6AwGiLr/7Ggad/Wa5ggK7TDKpdGfLk+EzdOu8FgeIhNPgik2EU+CKlLVeJXThsDGmwRBjWzmScZhjP9tx6djnK3/wyNjAVL19s0KZQjtaTEgCNOI8Iq+UIswJ827KWKvin+XJJomuGXXehcT2v4mbewxFIShL7pxqHr1TSn4jhhMytWTFJxYmxMzP+MIuGShz6l8MJZeX6yBq/nxDdQ25e/8WOCTAp/poqBKj+xOB4kNxEth5EAEeFi8/7ElxXTi3vcDo8FoJHlrjQRie2sl/QKH/QDuOdcp7QeZMjzKcoHkhKymsn3K1xIGIoD38L0quY79nLQihyNfFIrzoZt9+eGAQxzWs4ZwqUhn1LY2LpNQYbQAQeZbePLJJyMeY4Bsj1ypnq8jtOEIEDuUnxgFkZqhDH+s4qISF8gQ+9GaNHI4ho7MZ+IQKTEsjRzq5miqDAuOcBUASlVVfClXPTOydGP5ta7WOOnHdbQN6wCMtFfEZN3E5csSTdamrhyJMQtgJm4vmdkC1NoUEjrwgyB9WnNzTHjgF7uR4b9RCzIHba8hPkfgwkGVvmOizurnn1W/MZOVevISEe9UmQpRxGllAiBJbRDWW+oy32TBhM44nduGeFraYFRdvzUIg9crcAuJXMMUbZFuUEToxDmOgsz+3PT5w/dYdAvV9kuatjWNtNGie1YbYsa/4VJLK+8Mw3hEAQ/6d0tdX3o+mhYh6Dxu0mOW7arocyuane0zWNvqQY2qM5I0x50u08ebaGLyTC1NEJOjzgJ+XYE02QWtFUU/HTyakugBFJEvIyRi364Sm81A+vQrECwfD/bHK1E3TLB1tJYw/Adr2abkyfPABXdLeQRBbiHMLKiHHP626jf3Nu1PB2kMen2RJ7cj3S5NLiD1wOPqRK3h7BjRgJafkQWMcx5sEsoSeBVdkyYGcl0TZBU08uucmSh79gb0HxNGKqH7/zmVrLooHGu+AnZTGsG/bUe5AM3m7Zpd+a1uepmJ8ThaNVKzVlseJ/zp261XfsmimP0O00PbcUjGBAN+glMy0Zl1QyrGcEvCss/24n3P8WG43dbp5+B8XuQXVC9TDgKkCjL+jkHWYXzxu6bHvsOEG4s412g3ufeACs1XGGJ7EIRTaGyLKJw7MyjWoRT+pUFs/VsutS2TL30RuCKrQ8tWInAtY4T4MD6i7maFwYd5OSflmfLD8PO+3eLOW8w8IpVtawqYZfMeMZ7fNfSx9+HITB7g5HNyPW5AdWllpgdQOhS7L65kA0Yr7wN2Pbtb82uAbzSg3mUQqXQBZmSMLrX/1wtVoLCPlI10qPvpE8P20CxfsSc+35CVQDQCDDfdPaoqjFCE5nvjSYoujHlHu47joHGjSi4DwIzhk1QU+uUYoYmOaptbmIZ+S3Y3SYBCrWTkjE2T6S0NIXJt//f5Zz5sYjz9kkQQ24n2e48D4/KmQrGnO6TjrcPU7XjlkqTqRaC71NqBfImC+Dfg7u/el4ypfhzA1tfIF07/Mv0IH3pdWvKSuYx+iUWYUjqfj6LAq2k8ZBIMghdVl/xilpIV0Ybz6dT7dRSVeDhvCI8qHZm5Q/TJo0YjyYlxLj5PObjK622d6IcoU+N3HRTVmE3IpUWfNbIIPkurP/qCF8m0zSIHdrIq5wrv4M5NG9lmhXouVQq1DnWBkHb0jIFOvEaQW0+l8iVwpTIFr1IUlvQWltZtStp8sbj49z63CUtmxH7Sc/Gdx/7stxG18fzFdvNJExj/GKL39yqWNEVoAZ7eh2sbHIJWhr9c9KYGjoCEiO2kUoQsZHp7KbIS0g1Nz1iOZ/WOYe5FTTA+FA6oqgZ30+Ni/wVIitg35g0saw90gqJgzKgg8L9gEu6W8zia0egKDdkdN/cQENOiIfHew28rMbiTaiaRmXfiv9NxP59MkNSk5bIEVmikEXlLMPZ0o1UxUSbi+aviw9VFGppojJTNPVlZ8nnLBPhBFUth8kBTmUvZF/ojN3Z+IsAmuBe7vdq3qyRnD3BkzlfbdHFoEm+s3KGlWiULFrYNlNNeyZR3n6Oc0DgHy1ZS3f0cFhcDP6gwTTcy3Vbpfyvp8oTzo5XujPcszI/fc5Jc/yt3CC3dWm/XjEOxb71DOHAYFhIEDsp/GJK4Y+vKWHLjGA/DFfI+oRLhzpEUOq73mAb4H+pWGGTcI2ROpwbAFAri9Pgu3T0f/FTTASvuwSAeHMY1jSnUxiEspD6SAoA83gTiaX8DFU23jxgLxmJGyOJAREmyslfT/SvU4tNkOtrkhL/3wR1IMtKdU2FGJvmt/GovUs5AzA+K9H4Ee/A2YO64r7QmDcVI719SsQIyb+B7v/7W6UrLCxl6V5OaVEc87H2Z+y8lsWk6EkO76eZkScxWwL/I+42PKSpTjJi774ZSxQBRNXJfwY2gHdJROlkU7Mu1miNU3eOaASOkI1wniXfhapfFmmNsplh6Ld7kxa5P+i2UbOXw3uIZ5j6/Gjkde7QD/A3BSmAc+192Cvsu3yIzqq+x6pS3Jy13xw/qL0vlk7/8HQuzLKwz0zjoj/5CAEdLWuv4LK13WgtTq5MPPRAj4apLq+RdXYM9pQ7Bm4jbIYm44YxnaL2Gj45RQL9Ksb6B4CWOB0F1nDa3d+TqCYsOO6shFUX4us5ADz4KdkQBe+UNNYvsnLZ9wLyq9L/9iU22000s/gT26L1pGabogc5eTmaRxUcPk51RDB7AReK7TlhBmtBUt1UogSvKH8mDiSiYoiTcnk+X1folu2oyB83TKYx2Gq+7p9c1YyB6ELT9RIlGObggKe2UOD+aHU4VkGxJ4B7O2MJl+iJph9MJ+MLpmhDdWbRF2j3aqT3Bxko+rSF4FaAmcaD74tUmD+08D9FuvfsjPvzbee0J1nbpX5UPHL6xVf5P7qWLsJvQIKcaiDIHa3tBqn17xNwmp3tXzFToQ4VbKPDy461WWztCccKVOCLSAodSKjai5vDmGQwwZlg4oWZw+c9X3cAhn3rsZsQFmMwE5q5mSxlkO97M/4kahalqAEbxplqjk/RzOMBim+ZP9Wby/ZV13a/M5ozQVchJ/KGkG5VXe5R0laCeyQNez4Mze2wMWdflwP0Iautco0iXv/4B2vEVpcOv6P0UW5PvsfDCy04CvpZcg5TGJKSG244gIxFWhe4a27Wan29aqdMDDcXg9RuOFybHF9JJfgF1LWQQ5J7169pqDoHIcP8yxIQvefJaaFQlRgpKPhXlOJUMF/cExAhCP1fJPxWpN25jMfn/VLOreNoMRk3jsACzKqlyKyv0OckdbIdE0vbgWQJDT8SffVB/nd3g5nMTG4ZzUHamybEQoEXa2YEN2HVLaCJeyY/hu1WMdG+62Tv7XYE705NjdIg8CpnGBkCcW2+h2n+SYSWm6Lg2s6HMSWVh+l1Tq2q1FgZZwZoSnJqT+GdlwWKRx/QegwhBfSjxbDZb93vxYRzfYgKuFvh8t1O1rTM7YMNnIcV/2Z+mWFsgAx/uPTsiRcGak+tqKFGiXUEA++xbL95ZdUxqhE4D8KM9CbwBTOH3vN42ea4CvlhULmXNUCd+LfqFJIAydN/bZvz2RM/KfldjMC/i8YFNN8tD8RtCLaZYvN5UgbxL3m+olTAZST4zHnqP6MuGBWmihQpPrVqmQw+fic4uolb5fX05v54u3qVqTZrsGBcpJuVzOzjNZv61EZ4N6nTmTojoIBLLm18hXH/aAQRPyk4viAGbHaCAwiaUziXZm7mVDBind09ZceMlxC7sTx0v2khXxJQmoUKguNekLm0ClyD9KjDMHi9y7cfzdUpzJLsAi0YE7lcDARB+he5Q9Sw5VVS6ul25bYXs4Cv1sKAZkA05L2ulBr8KI91eQlZn6pk+7psPs2ZFMc/m7H6Kt9oQg35Z1zgco2fhLi6m6kfGWMtlm2XobH2/evmS6PrQgm2148UPpegCjVYZ8PwPNHsDDDoPunAGCCeTzmxfzPOBSN1wIhr8WDA3RM8HPSD7K2y9O5vrBoe7DbKZo/rV4TY95BBHI5Z0iWqvQOgNNBhAMtA+zVCfTVFHx2e9Zuw205A1I1EBaC3PobcvW0xLHMAz1uXO9578a6Z6I62k9ZcG5hCR3yqMqNJUaeHaVFw0RpTzwdnvftXr3Jg9UpLUKZrVRtuMJCuGdSnc1tIRmdEUWbU6ixn9b35aXk66KbQRXWAwg7ie4Xqbz5bUUFywQzf/a1TUGYBohSPyCj+/OYF/adbm/lFEA/rvZxCFyhWnHg2YpQMa50MH58DRI9XmRkoV3WVPmQe1kK1Q4I01FQpFLjCD06EQJLwKCrDIvJz1DFe3yskW8trNznWht6Hqn4vq32kAMmFfw1MDYW94pY2QWis7jSsiZYm4qb9v9B+It1OQS+Ggo7xSITGW4Du49sxF9bi5PzZ7Ln78ay+y6j/QGqc3809iBMMFP22gudQ8oEkJ5UL0RmRt66J7zZn+ucYOghxWvUZDnOl/UsEwhhHT2gRqkj4BYZ31h3BMWOk1YrFF/lNhYTCcAFctTgnxFG6bh8L+ehguQbtpXNhl7pHvy+LN4wSMB85peZ4s33PLQhT51xa06KZ5f56Ol40DoVx+szzUXqIi5kitewzoD3w5Jnhl8vjQHgrMigiXNJZUWVg2EZa7iUAUGIwnWLYdcbX+TzwhmeKOZnfmbYkXK2vZO3yxza0lJYCdWvKR8Hdur3IYad0T3wah6TZLmszAUIpw16l8F+Oiy24fjiugPXgAWhNITglb7PvMA3UF4to/S4IedTSLWXk93qY6EyWYKHOsPOz23q9OO8P+azARZAGeJavA6W/E3h3h5tdAgExcbfIDbaMKVzj63T96JQvrfNH73z9piEdBokJMpuZhMBBiomm05pQcEQaJFoenTKojtomhYZ3w7/JqlH17cOW7QBXJmlOO7pXkgU+tIO/EawIHE2RrNwZEGpVlwkrmsTLdGivA/L6KEMcb8NHB/sqM9rlXJIayccVw1izCrAkgqjWrdMM/ut3KMen8NZDq0SZgAdNei+viniR/wYaRNBBjAadZ2yRBNjRSK4JMHO8lxws/6TlnPXpJoMrQLdkpSIOtIxTGX1KK8rkFoUXCAEVSkA2Ed7Ot8nIjCF55+wv+I1E5hLfApDrB1kaxyq2tpiPT6YZhRx3PUitmcAAAN7nt7eO837I1Utto4Rooj2FKh8NHoB9O/2ucXxwzUNFEu1Iju1K4jBAF5HdlidniDrS86eBWvWks7qlRYSuo7uZ3paeUu8qDSa9urCvX81rDjnwYdkardG+c6Edd1F50Fm/1aqnVFxKL86amISo0o+SY+UMIL8IT9WYT8jr9XerHUITDia39w2ZskR3RxJgc9N43dcNAeu6Q7QqvoVxMG6dvlDSbxi89b22GF+cqF+J1iqR0nh5h+FCGs+cAfnTKONXuqbGFk4ZnQVkQuI995DEw4SgvtTMFhSzQbtX1rkeuJIF1HjfWRRnlEgBnN+eiyE55+gz3nz9XfxxQ1FwUGwLF8lE3Ui0L2JvWa4JQRHbpm+DDVlMVJr0GD0HMcBGigMyGbjolRu11aRpi/mcBvqYqeAEg3OKy96DgNOO45RGFprVzryP4lrLGKNldG0LurIK+gFdeFPx72aCGzz8Fu67EPfW9jj28KdwkcpOPLgJnjQzvaLfv8oWv1wItUUp297ZdGNQYmT2vcwcl9uGvP/d8bv/qdGjZfxregxqLEPmO03Dti2B7W3NXfFhqqVKVRouTrqybe52YiyZ+ZLVcMbFlVWDiWuNVVq/Yc67Sdm3nWYsAs3BliUncdiuGnu+Et7QgsBBCoq8PWxm+jM3L9N2B+OtOAUJPrxgYHTqr8iIJlS368B5/6mMGNf1B7FfRjbUizksLkDc/50f4g20eF/xxtKd5ZXgwP8ckpr+ZQspvBUSPhPpUHvEUBmpcbUgUso5g/0fxTAiw+gjozYp313NtB4ScNI++Z9yi7ug2vrUroTHSu/SzDEB+08zUNDn234B2GPEVZEGkY1JRJgHIN4XRv2XEJQpmkb+0aRbFiAoHdQCsBo0yTngkY0JE++L+QVySbx2DTtV9tHpOt/EYOyb6GJ0MOAeZDyWpe2/fI+eU1rSFHfuO84VoaYkKp9MYJsYrkhjfdJGDTseAOmxPU4nhJlmm6CFU8vFq8tWH8ZZAQe8fI0IoNvppmhXbtUCk0GKoKAqW197p5EOhGTp5//TlZC1eRE+E1SxzvoHCQS11kenheezSDe8ixKn+haEauLSwmnh88qmS2zP482bTbG/mYun9gnBybOd1EzPcC7mjm7B10Fy9Rg2fKMYRnRVgX8+NC+BoAFzbJi4MToMGLcA3Tg+/HM285+oVJGBsScEMjTzjgdEupbcAQvgcAPmwvRgasJZ4KHxUowaeJhzM2d81I1levShSX0TZ3kd2odQLg4ExTF4mgY4xdkbuUT5uREzUIiiMHIOucuqucul2fHKEeipmgm7qnpDiK1YpAEQuH0a6e9DZ02QAcAsDyNxIiKR7zQzC3scDWryxKnqeU7zpCxFygOvEq4guFYbqWoZcL63cWjwVz2L7MPVZzyd9A5vKQU/RPI7hoahO86qE1BKNZGg5V4DPCEuTODrSZ/Vd0Yp3LNZKy+/8NzJNzrQorDuPXp4NfmfpzA2/YfiKdHv/uyGRsBO4KlM7ufkggPAzj76MzH3cMieATm0vO6m9T6YTHMqn7YytwJxtDkdxTBKuQfzib4MZBEEFZZk/v31FYwgKDZsLqN0UCByK9X1g0ryacbsuwx9aXK90gV6GaonBxAs252Op5FE7twpeUCYvuwoLsKz9bBPU+Gn8uAHyTHIbi0RIlYrvRbNdsIjIEsxm99vXFhLZ37pVHExAiM0HlbUSsaorwkbhBj7pOU8hNCUaLviesFLiRfpWYL51tjLCCvX4Aw7KXfqNG5qrJTcen9fwIlp3mQo3YofQWmKJ2ctSt3bbP7xnzG2lBK1UrczpFUsC0z/Rj8ldx6HyID7kU/0GsZq0/uNBjEpZ/ffOWlVKg2J/nTNmIZV6ulniocvgOPcSPL/uTkGk1uhpVGGYF8SJ99GTwmISiFmfoV2pZ4w05WXM1zZLo+yNobFP5gBtgru8+qI8KluA79FgR//QYQpx/f3lEWf3blgLslwTrvAA1k/INJ04tYh1Uij/UDI5pWd0trXspWLOiY7oWBJx5DTnIBkELswcKH4rTWxNrw0Wqu5r9KHoQBe6rY1ulzojSctzNDux1yhksqxBcM7wB9v/gS1+JPAXHWAjCSTi41OH6U9JKsNZbaSPqoU1kO62eqEKsIHkDbjS3yekIDHhyS27XfW00ebHB/70B1iCVNTasZQi0rtLBqkicpYG5K2nm0GntMnRJm2za4YWx4dfe9Ng9CIADCwDNSOVx77K+LDqKwOnEE6r4DuGCHW7K0ZQ8DG59fW2W2pQhRPvKJ5Ju7TFSode5zd5Tzx6onMcKGJeS/E32JELAZgREiLcIkFZLjVyKOg2f0EcKKKJxZ9PbTnO+mNcKkCpVQraC8g0mgJboNouOjybndsO4wqpoU9aMubB1jeoQh3ihnwoD6ZX1H4magDDMuLRPIkbDry6u+mNdSgD7YWsCoLcRjqMEXDiymlR0JWuOXkbspCWER7gf0DfoGIFwHrlQwSfgTcNvrY6yuTxwpczrz9vBzJrAc2+siLKJCQutkMo0QHvCkUSsyrbaXmn9b5P6tqBcAvrLOUhqlFykehINOWF3r/CR60TvVbOu8LdZTkewk9yx03/myBOwTV9CXE5MKQAK3Pwiy1YTy1OsQtc9w/jKlx8cYbNsCwBOuqEtzlUV001B6NIYa0jrUS7BUtNuERDkMbVQTW9P5OY/dWKIyj20G5oYjcOQOK/GoQ2SYzDv5vCdFOT1eN9k7uPObQxHIkpuUQZ9hl2Z0ft4jkkfA52m/+lWaI3GbNjnMNpLTv0tQJJgoyM0jKc5qdex8cXHso1yf1h/M77kRZqgapRpF3uEWLQLjq+Wq18aBl7R4sA4S2UGfAp+glwnyOhp/5CWjGLXFmsJ1vz+9U6VvW1I7g1cgFZepoTbxdeSwZ0bKTil+BmyeTfk7m7bx7rsAxK0hYpw3W3ZgfW5K2WwH4bZLOkl5xchyfV4gPjjU/ZA+bXjxziObEjHf/7E5LFc9goLvO6t7hT483Vd+ttjlvgGAng991HIJszTE+cbyQJnWsXefzMBMZLnfEWirmPnDOu0g8jGaK5SXWVSGVkpZuy1W6Bhs5o9pmYp4cYB0ZIYvUFWFLAy+CVK8PxM1GtjaS9Dqp40rZtk6P3edgM9R5CK1xVxqu61W/9zl3KJ4glhpksFpCKpclc42EexBcYABYXq9/VHXfj762L0rKUkVr1DyrebGIzBO9uKrT2srTAlcVeO8QQdqb9vtqEWzqLzoTQ/VHKIcYrUVnW8bQZwtORkmtc5jS9GZxJSaOjVY4JtFhNlfbUrKhpTGSIlfPNil1t4n/6tFgOaRRlAjqVns5/9bLZ5VsBNYnHNQECOLKuP5FwD+EsRAn20pcWVsTz85kLw2RfIyQiTQQu1iBgyLGDplWALNdpRw2pLFqrjUq047OeUHQ6We7Gz3p9HI5GuvTGYsc2EBS2hvciJ5zoGwZB3Ch4lxDRx/Jtqu2ykuXTZmPDrFGZ8GScjgncAd9RSjWLDOYQtwSZtxdC0cCUi1dOK+BbdpzwYGIhzbVqCwrJiKMMig9YLRfGL+Hzb4ZdHimHAVjDUMNyTwTf452XIirwnRaNUCf/m5GnQbn2v4VOcrMo6q29hEXEm7ANUU1R/CONbK3LMwLND/IEo5jw9Rq7bIIhN2fNLp2VQPR9cOJPLScGwd6traaYuoOUekWolRMXcYjVT/ElJ8waGgfFWb44uCtlZ3+SZau4PyL8JrMQe213ruLyX94QAV7TTu6oKDrF/q3IcYdN9PeyN7ifoHvkjmFCyoTvYXlKoC894MSZOFPkXISR+R2ZDugNBmIirBPQegQHQg5yHyIPAWlLHf0HXQnqqvZ2fq5Wf4KwPMQ7+EidcZfCIhHzZsiXKykSnKGeFcEg1xciT6gYPuC2rieRNqJtH//mqQZyKGwzn1saE38BEuhsfC70zBlAdYe4AhKf4VbFZniDdGcSxUnui5jkD3gXvo2Pi0Y0JGKb1P7wS5fLwKkdhJXy9ndyauYUM88wNhN4NcoaAIlVdwXyKzvXRcQyaBKwwNBEddryXZnFstFowOiLD3jYtopjguEizXSfEIpFwY0QPQdn01ngyyiRESPejpc9jgKgCQqMmAk7/KZku7ovzNVh+MdpU3ge2RoaQjxpWYuSk+RctWrO44p7mOPIzEa5Hf4bAyzNI2i6Oe9LEsVCWnQcjiJ53CdvXan1I2YbpUii85MauXwx1y6MPhJT1mFp75AYRKMone/Eb1te4GaWxfKmorud7nE40xuDbWDpjUyItjGXAdWRd79pHvlgtvdAgvo2eF0VJYAIKYqmCtqKxKsRY1xngaDXkbGtCVJlOCeXP73aCe3DGGyPn/RgFdCcMojwsmYiE2ejgEfXE+4oHy6Jkk0tFmL1EM7E3167ep2oDDMIHXEnZGbyjJhJC1WdMpJRpvqdTd68NnWD1koLMF3P5lqmMVz77hMvzpyJvySmIwu2hB3ieXsyE5Hg8AJuYW8h2JKks8lrx5i50DiObKCwh5I0Isam7cm1EIDFTj5akvnrbTdurfznEUw9h9EVAyAqDCFy7ovkrXMa0J2k32mXItG/UHLj2yr6Kzzs7ocRtamtJtKRi/sHAmNjgYrtCqW/cDwECUSSfXPkx0Vo25fUMlwp9dOAbw/B1MCtCEDugglrona9oCHfLseJDhnXoWRk6+ElMS302joM8Yx9PgxpzJvkwhX1HgcxOY7EMZLs1y+kcbgngEUXa6DsL082noVgn4bcsLdHf7s64g5jZJHVk5hFDDIkdIy2gnuEMY1tlREW0l5vn4/QYSFVRQacRlX20Q61cXokykYTQ9mAyADezChAxpiRDFEESy1l1wDoXjR1D/2vdCJBOKQCN+FSlYGNetIfZnx6G+E814w0RPsoC/cPsVDhvnZf778BzFy0kMfpolmp1SPK+6w0EzJKHHhTiQ2X5v+Xt+bpsqm2RSTvqFfKTWqXt9rjcj1ni2fQXqkfeTX0NZ01unQcyTtlsVHRfGTTraH7gdnO3V/M11yCYXTo5y6zOOnOzOjIGO1sMnB4P/f/xaPey09METSsvuXm73IT2zjH078PojA7rI+OcqQ6VvOo0PdJpCfpuJlegilk3eQpZ8qaOBZJKJKcQUbTAm/7Q4tHShkF5laZET9GLM2VxwG1NL9hWqHkgA1XXc2GLQB9yPsMfixEdRU1Ty1J5BxD4kModjbtTlAMMS/O4QtfzTRVG/TOQpBZh5S48llvIBlzzbmWaqbYgEXh0xEK5aYSxbr5eqEjjiSV4i4pK+soF1cZywrpd19crF/QqCV9FnTsEDKZI1Brs0Hi+/eXNeUA08gICW3hd7VbRYsgFOTlU0Nmp5EasTIrPFkA8UZDd1F4lMViw/pgBjov3iKLnc0u9/cZsGWNEz5+jBiqYPkfS+ujXU9Kkpj32NtBQeOHlfB+A9SLLLeW3KxiCDWayW0G5/7tOo4WomlXbEc1iwV+4Ijtl2mwRccD/N9SfBbzng6d4NvGffISYrZpZ+Lw7gElIMtBjRFdpJmjOpoZWStENQyNc8ep524j0fqd7qa+aEgQqeB7BwNbdEKWM+S7NaMZxETKEnwvLtWMOuTa+PPbkR8Trxlh4Dwu5eODrqJMIagLpOllGianm/V9EW+8Cb41DzaLnhs8+jnbf4JWM3zNUAneayV05iy3SRhiLRBfNWEHmrgnsxItnIEJCJDZj5R8MksC224qaAalmtaAuW9YE35svI6qTx+5Eskwz/7U74NbLg8ZdJ5BgO/NDrqwopcH+nhQpngUFhwuQNoWhmIsBn0PzIdgau1YoYAkozYI/dbrnenqDTlJpJbpCo1OVFGTcQNVzd7nXM1MdO6tjCiZprzuSGYV6nmZ5Cj10W2T+FjXbb72CE1qMl9jpqH219GYBK2Wmspt3h1V1VeOPCILil28qDp+EWfCm1KcYXlm/Dv1vUOn0tDzIJgXWnecX2yoPfjxuvPvMC1ZiiaQz5fwFfX4KXR5i3BKpHl4BOxV3alI7fpcjv7N7ESyikNjgEUs6IcmQcYSmykYdsD1zZpamrbmV8tqGOflU5Gej9VGh9PNYNTLLh7IRBZZSJ2GhXxmuG8Bb5nbFottmp13IuRK1WcNo1xRJE8Sbu8YWZJ5IFEh2oAEX0STbeLv0cGIZw8fu4Uiahp1o5B4X0Qe5Mcra3dcCwsowfNJp9bUT34jJj6ExRnCSqDkX3CjrSlW3L+MIpBSW1WN06C2oT6L8iUjASZQa/XEthEmbdY6YVHFgaQMw7IleC9r2Y09+GMSH+4cxYM2IFA0SzKG2uOMXwtJueq278FDnt5d4aOeRmz49fKNA6tn3qIA49et+3MRO0mtxMPbFT2v5Hd1KxxUWLSDlzNUaY1Sc/tAPHUauypUb3iqkdCXls6osGBdJUO0IMcbzSBDaLm8/lqwkTbAXs9/wRUXwI8X7/iV4BYIRXaUCrufNrN+pJncxCTPcQayHm1npXQMIcGjNcEpCK1DsEQxb4tqiXJ5gUjFPhitL2YQ9aRYwiz78Vy0j4nOP92jmKEP/73pbIjh5DdLcoOt1xBC1N4rQKVGFl3TworGUh6wSLDtTUGHsDxJFMpbb1695o/S7LLE3IPvMFHEKm/FSDJ+vu1TM6zSdfMUJ1bohLLhFwTrWnBA7y9tFoMEdZO7bhX8uttkx4QTVXyAgQHlC591uFy1aYEG0gKjNoxNtm6FU6fkPWcEDE1XxQXeXrCZ0Rh2W6a1k410n2Jbz4v5OEPfuKOF+TiFRyzePYFzkv3Izr0J2r6g1+pMVUYWXi1LqHyUb2LOL+HAT9GQkd7O8ePS1qwMGkr6S3wEF71LAcisu3e6uvVwb+GarSAOrzYvAwwk7LQNPW8LatoeQVGCIl4zR0RTarw1n6mVIRmYQQy37QILeouHRaSbTthn1/rTjjxDAOobSf4pLEMsawXEPB230v10oVnq2W2J5MAqtoPXht+B3CKYvAdkIglG412EiPw9my5vE2bXYYMSx41ONEfxNruc/8Cid0+Dtk4G3xq7vrN/BE8b50k1EbkNaPFYYaPUvyvP3fAhp4dxTS7uJeye2jY5+A11BVMHvW+uzH57tuN1tPTabJG48MkgnuEJoWLHVn5H2Ne7wUxI3iuDaRWb85U0MRx7jYE4wGBSVEWKYoajGKXZBnMZk0s3mKU8+S4Rch/Sf6smnZNZ04FE2+38Lcw0aiTNB7YXoc3U5si5Cnbi4two5ms8aZq8n5y6zHWUcEDHzy+jg/RAUfKJWPPEViS0TYDcq3P2sr5efAtzZxqhWa9lyr5iGBpy0K/wZK/fPDGtlJ8nvA7rnI5ZtnPxYEXV7T4gAeZ1xf83lsu8kbvL08SI2mENnQu/cahFjY+sMYCwxNXlYks2OcuTq10T4ertO5auxWu5jFw22j7WAjywDXrCz8kzYhJwmfhk9ZXRy10hW0RbjHJ+DNFRSY5iNHsR1trlToaN2mq+pt99POWxIKU2CibIF9Fo6Nq/peqbP4MDNaDChfxvMxCt2FxNGCe9RlL+s2aVzOexVQTd2S5+EQLkd1dGjG0pMc6lKqwR3Jhrt5c0s8sewEsPYTHcn+ZJ1AbrcOsjpMIPT8bnXCbdlXit9hYYdnk682TR/CBvDAoOMwtsRY0DiGQMbYSArs1WxUYELvdcZZrhjKL/Ch9GJBgMjdC8R4FVS7waD8mV+BaMQsyQO509E+ajv/UAdgYrtLnu4+mkdNGzCcWKLoEkuE8LNE3pw84GQnL9onitTj9OVijpeoYDNGmnU/1DAR5zVs9n0ij2f6Wgn/s2unvYY1+1rionAZ7KUweXmduIdZxCGblLtE8UYmOoeYfcSOcA+feB6tY5g0GV27GSaAGAXOQq/wc3GTId9ryNpklWm7wnDOLQxLLYXFBlNmLQczGm3/xf3/qsg9gApAbtSTgNmMfQ63FPKQbWQweyEAOuCihiT2x79XQdwjt/ZVo4KycsBGXq5i/2Tw7iqDjEL5Iy/if9F2cg880vzuMvyoqpfhwkpx+RYkCxzW3xlxALPTOsMGADXKlOabtfk0EkM1Qp8oMG56W85liEA6MdgkKZA+K/g++bZQ+XhwAZOOIsg1yfmBbxAB/Lb9QM902BEQMTW67gpTsYY76bM5P4BzhV/uRAZV/5XPKjNRz6jBY/sL6AgKnhfNvzWPCdOH4q+4tVePL86Bvl+pJKsEeeLObqLIA771XQIpwVKiDewcYRJBzAWECDTrKY3gPaS33Cw3/TRztR4aoArKt8IX6IKbQVLISSYxs62W0RHpPggulKPsWfc91S/Otk3vw6n6evaGvPZy3+epH0bsa3cgCm/i+vc5cOsD1rUnapdhNYe9WrJYv4sXXpZHhJXkxkKS3PEugWM+dZz061600GhGP/U88FWPchUbjk92jx2bVb3ALIn/1DEoBjl1FipOYLCVDOGDJjZS0G0CYhw/Yo6zjhV5uv09215FBXF2+vIQb5RqCygRhrf/uHXEsbo4LgkGPZ1K6QfgyxaITTQRRvn5bBoma3BxRdxZAvcaMLzZdDzsW44ETqknE1Vwwp2IRmctsvniZ+liem07tEEyT/oiJ/rHZI6URFFy9cjBXAWYjqABTtjMVDznxCj+drSfK17ru0TTFXUBeoE7c0z38IxDIpjsM93rxQ0bkWYmU0dK9rkbyBQPDCzVPyh0wh5TdSj0+Yl4oe2ePc/hjx6kYFUrQjqdxPngmjU0dBH/yBiK+DboE8aLACS42tDbvBZgaYFl3FnCNT7lj0vVIuROxOidDMMP1GUrASnAAhDJNrBYR62k7jlgNRr17QQrNJgdxvDOr3nUOVDjB1pS0SGlk8IuvVrCbORb1FYF7rtm/4NfpIIomfzBXzjOeTSZAeHET5G19SGD6Ke/GNQi1FPhzzRvCj8Cbzbtuebb+bmZMquYZtMvPE2z3n7WkbUrWtO6XsQ7VFPAEkXKVeSZX8y3DHcQvKPT7EfGaCcgWDFiTek2quKnvnkXe33X6FzOjFOvGR+MZ3y/QuwZzAcqy2MDejXarcZFqiw/znCXCQhkC8D8O6bNYA1P+hllfIEcONIeu02N0ZoVh5fDvwXBngvNZLCLO4kuYgcWUfZMEz5QC68S4F8ygEY7yZijXAlcgThSWaK43gyBRFz4hWo9iT/q6ywrR6s5luufZpQlTK7QH0l0ZUWhIuZXVnHSjgNUDtA/UTqeD2yVYc5G/9mPYvwnh9QqTAOcab/kq9P4rotTCLPv3MzGpBKEHI5rcJOlOCfPjqSX7jqaSalrs7hYzMqtDztEDzWzb3pC5ZTeeXlLXO5ujUUJLa72mpWueXciW1HM7d8k4qY/z5fSoD5YZ9oMgDq+I5MNCKymXa2s9DvP0snv+9USc3CJqsvXmclpQLyqr36E/F2wAGzI/pvynebfw19VSMLwzPSkHAIEudMj4vnaWiwbjkujwsnZylsXPWEdO9i3fCWBGDePQzqz3PGH9wAohR2tIOaZdT5Qh5b+otj4z+YqafwWTKQs6yhUsQ1/8PoHljFTbpXbroIGRxLL3FkgULXAbxsdwWy7ynwRifWYb2wb/7/IsKKR2sRHnSw+bBzSS09vpqr6x8NdGP6m0V/W45BY4/fpv8S4cK04NfXSmaYmMi80Cabs2xrgS83irkjDnBK4vO2JN8qUV0gz+6SwiycvKbZ/N0hqPth+4K/s8CsvKycO8sK2reWPD/Kr3yqnfBLbFoPO7e8CAIaxbqZDeCMwtHhvmYF9GffUZSpGwvfIuSQSZaWptBBtd0POZ0bGEmREphejt0hp6cM8Wpa0pTqFeftDeNZcmufUXRoixYzcGBaag0C7UIdgMDGPFY/EEa6GznwgPquYtZG7x3ApwndUTg8DWAJZPJbulhNseimlm2Qdiqd6Lq1e/NxQDZkwPoSoyUZtU1QPwiCXp6uZEGvZHlJeGZ8zknTDmOyidpFVMVsifsxTCtC5ep7D5JDPnvmahpyARYg4u0LtAPBRFDzKlX728ye/uFRzLW5PKFf+oggTPyU0fyCZCROjSDnyCobCLuXNI7c3dSfDewPnYHlwq644ci+7ZbroOjL4SmeJ23Jh9TGycMUB9fJCutugzxcNdKG6Gtc+nmGXLWbt9D8toqIpLnqdOessy4tyZiAQInbANA7ajAKBKJ94TA5ZjE8D1f//4ZGWeg==")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 8f99b9a..602dd8a 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -19,17 +19,22 @@ * * * hprose init for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { - 'use strict'; +var hprose = Object.create(null); - global.hprose = Object.create(null); - -})(this || [eval][0]('this')); +/* global global, window, self */ +hprose.global = ( + // Among the various tricks for obtaining a reference to the global + // object, this seems to be the most reliable technique that does not + // use indirect eval (which violates Content Security Policy). + typeof global === "object" ? global : + typeof window === "object" ? window : + typeof self === "object" ? self : this +); /**********************************************************\ | | @@ -46,12 +51,12 @@ * * * hprose helper for HTML5. * * * - * LastModified: Oct 12, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, undefined) { 'use strict'; function generic(method) { @@ -137,14 +142,14 @@ return true; } - global.hprose.generic = generic; - global.hprose.toBinaryString = toBinaryString; - global.hprose.toUint8Array = toUint8Array; - global.hprose.toArray = toArray; - global.hprose.parseuri = parseuri; - global.hprose.isObjectEmpty = isObjectEmpty; + hprose.generic = generic; + hprose.toBinaryString = toBinaryString; + hprose.toUint8Array = toUint8Array; + hprose.toArray = toArray; + hprose.parseuri = parseuri; + hprose.isObjectEmpty = isObjectEmpty; -})(this || [eval][0]('this')); +})(hprose); /**********************************************************\ | | @@ -161,12 +166,12 @@ * * * Polyfill for JavaScript. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (generic, undefined) { 'use strict'; /* Function */ if (!Function.prototype.bind) { @@ -497,8 +502,6 @@ }; })() }); } - /* Generic methods */ - var generic = global.hprose.generic; function genericMethods(obj, properties) { var proto = obj.prototype; @@ -561,7 +564,7 @@ 'slice' ]); -})(this || [eval][0]('this')); +})(hprose.generic); /**********************************************************\ | | @@ -578,7 +581,7 @@ * * * Harmony Maps for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -862,7 +865,7 @@ return m; }; } -})(this || [eval][0]('this')); +})(hprose.global); /**********************************************************\ | | @@ -879,26 +882,24 @@ * * * TimeoutError for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ (function(global) { - if (typeof global.TimeoutError !== 'function') { - var TimeoutError = function(message) { - Error.call(this); - this.message = message; - this.name = TimeoutError.name; - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, TimeoutError); - } - } - TimeoutError.prototype = Object.create(Error.prototype); - TimeoutError.prototype.constructor = TimeoutError; - global.TimeoutError = TimeoutError; - } -})(this || [eval][0]('this')); + function TimeoutError(message) { + Error.call(this); + this.message = message; + this.name = TimeoutError.name; + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, TimeoutError); + } + } + TimeoutError.prototype = Object.create(Error.prototype); + TimeoutError.prototype.constructor = TimeoutError; + global.TimeoutError = TimeoutError; +})(hprose.global); /**********************************************************\ | | | hprose | @@ -914,7 +915,7 @@ * * * setImmediate for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1080,7 +1081,7 @@ } attachTo.clearImmediate = clear; -})(this || [eval][0]('this')); +})(hprose.global); /**********************************************************\ | | @@ -1102,7 +1103,7 @@ * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; var PENDING = 0; @@ -1901,12 +1902,12 @@ } } }); - global.hprose.Future = Future; + hprose.Future = Future; - global.hprose.thunkify = thunkify; - global.hprose.promisify = promisify; - global.hprose.co = co; - global.hprose.co.wrap = global.hprose.wrap = wrap; + hprose.thunkify = thunkify; + hprose.promisify = promisify; + hprose.co = co; + hprose.co.wrap = hprose.wrap = wrap; function Completer() { var future = new Future(); @@ -1920,13 +1921,13 @@ }); } - global.hprose.Completer = Completer; + hprose.Completer = Completer; - global.hprose.resolved = value; + hprose.resolved = value; - global.hprose.rejected = error; + hprose.rejected = error; - global.hprose.deferred = function() { + hprose.deferred = function() { var self = new Future(); return Object.create(null, { promise: { value: self }, @@ -1937,22 +1938,24 @@ if (hasPromise) { return; } - global.Promise = function(executor) { + function MyPromise(executor) { Future.call(this); executor(this.resolve, this.reject); - }; + } - global.Promise.prototype = Object.create(Future.prototype); - global.Promise.prototype.constructor = Future; + MyPromise.prototype = Object.create(Future.prototype); + MyPromise.prototype.constructor = Future; - Object.defineProperties(global.Promise, { + Object.defineProperties(MyPromise, { all: { value: all }, race: { value: race }, resolve: { value: value }, reject: { value: error } }); -})(this || [eval][0]('this')); + global.Promise = MyPromise; + +})(hprose, hprose.global); /**********************************************************\ | | @@ -1969,15 +1972,15 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Oct 23, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, undefined) { 'use strict'; - var toBinaryString = global.hprose.toBinaryString; + var toBinaryString = hprose.toBinaryString; var _EMPTY_BYTES = new Uint8Array(0); var _INIT_SIZE = 1024; @@ -2550,9 +2553,9 @@ Object.defineProperty(BytesIO, 'toString', { value: toString }); - global.hprose.BytesIO = BytesIO; + hprose.BytesIO = BytesIO; -})(this || [eval][0]('this')); +})(hprose); /**********************************************************\ | | @@ -2568,15 +2571,15 @@ * * * hprose tags enum for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +(function (hprose) { 'use strict'; - global.hprose.Tags = { + hprose.Tags = { /* Serialize Tags */ TagInteger : 0x69, // 'i' TagLong : 0x6C, // 'l' @@ -2615,7 +2618,7 @@ TagError : 0x45, // 'E' TagEnd : 0x7A // 'z' }; -})(this || [eval][0]('this')); +})(hprose); /**********************************************************\ | | @@ -2632,12 +2635,12 @@ * * * hprose ClassManager for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +(function (hprose, global) { 'use strict'; var WeakMap = global.WeakMap; @@ -2658,17 +2661,17 @@ return classCache[alias]; } - global.hprose.ClassManager = Object.create(null, { + hprose.ClassManager = Object.create(null, { register: { value: register }, getClassAlias: { value: getClassAlias }, getClass: { value: getClass } }); - global.hprose.register = register; + hprose.register = register; register(Object, 'Object'); -})(this || [eval][0]('this')); +})(hprose, hprose.global); /**********************************************************\ | | @@ -2685,18 +2688,18 @@ * * * hprose Writer for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; var Map = global.Map; - var BytesIO = global.hprose.BytesIO; - var Tags = global.hprose.Tags; - var ClassManager = global.hprose.ClassManager; + var BytesIO = hprose.BytesIO; + var Tags = hprose.Tags; + var ClassManager = hprose.ClassManager; function getClassName(obj) { var cls = obj.constructor; @@ -3224,9 +3227,9 @@ } } }); - global.hprose.Writer = Writer; + hprose.Writer = Writer; -})(this || [eval][0]('this')); +})(hprose, hprose.global); /**********************************************************\ | | @@ -3243,18 +3246,18 @@ * * * hprose Reader for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; var Map = global.Map; - var BytesIO = global.hprose.BytesIO; - var Tags = global.hprose.Tags; - var ClassManager = global.hprose.ClassManager; + var BytesIO = hprose.BytesIO; + var Tags = hprose.Tags; + var ClassManager = hprose.ClassManager; function unexpectedTag(tag, expectTags) { if (tag && expectTags) { @@ -3406,7 +3409,7 @@ }); } - global.hprose.RawReader = RawReader; + hprose.RawReader = RawReader; var fakeReaderRefer = Object.create(null, { set: { value: function() {} }, @@ -3968,8 +3971,8 @@ } } }); - global.hprose.Reader = Reader; -})(this || [eval][0]('this')); + hprose.Reader = Reader; +})(hprose, hprose.global); /**********************************************************\ | | @@ -3986,17 +3989,17 @@ * * * hprose Formatter for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +(function (hprose) { 'use strict'; - var BytesIO = global.hprose.BytesIO; - var Writer = global.hprose.Writer; - var Reader = global.hprose.Reader; + var BytesIO = hprose.BytesIO; + var Writer = hprose.Writer; + var Reader = hprose.Reader; function serialize(value, simple) { var stream = new BytesIO(); @@ -4012,18 +4015,18 @@ return new Reader(stream, simple, useHarmonyMap).unserialize(); } - global.hprose.Formatter = { + hprose.Formatter = { serialize: function (value, simple) { return serialize(value, simple).bytes; }, unserialize: unserialize }; - global.hprose.serialize = serialize; + hprose.serialize = serialize; - global.hprose.unserialize = unserialize; + hprose.unserialize = unserialize; -})(this || [eval][0]('this')); +})(hprose); /**********************************************************\ | | @@ -4040,26 +4043,26 @@ * * * hprose ResultMode for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +(function (hprose) { 'use strict'; - global.hprose.ResultMode = { + hprose.ResultMode = { Normal: 0, Serialized: 1, Raw: 2, RawWithEndTag: 3 }; - global.hprose.Normal = global.hprose.ResultMode.Normal; - global.hprose.Serialized = global.hprose.ResultMode.Serialized; - global.hprose.Raw = global.hprose.ResultMode.Raw; - global.hprose.RawWithEndTag = global.hprose.ResultMode.RawWithEndTag; + hprose.Normal = hprose.ResultMode.Normal; + hprose.Serialized = hprose.ResultMode.Serialized; + hprose.Raw = hprose.ResultMode.Raw; + hprose.RawWithEndTag = hprose.ResultMode.RawWithEndTag; -})(this || [eval][0]('this')); +})(hprose); /**********************************************************\ | | @@ -4075,23 +4078,23 @@ * * * hprose client for HTML5. * * * - * LastModified: Nov 14, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; var setImmediate = global.setImmediate; - var Tags = global.hprose.Tags; - var ResultMode = global.hprose.ResultMode; - var BytesIO = global.hprose.BytesIO; - var Writer = global.hprose.Writer; - var Reader = global.hprose.Reader; - var Future = global.hprose.Future; - var parseuri = global.hprose.parseuri; - var isObjectEmpty = global.hprose.isObjectEmpty; + var Tags = hprose.Tags; + var ResultMode = hprose.ResultMode; + var BytesIO = hprose.BytesIO; + var Writer = hprose.Writer; + var Reader = hprose.Reader; + var Future = hprose.Future; + var parseuri = hprose.parseuri; + var isObjectEmpty = hprose.isObjectEmpty; var GETFUNCTIONS = new Uint8Array(1); GETFUNCTIONS[0] = Tags.TagEnd; @@ -5246,15 +5249,15 @@ function create(uri, functions, settings) { try { - return global.hprose.HttpClient.create(uri, functions, settings); + return hprose.HttpClient.create(uri, functions, settings); } catch(e) {} try { - return global.hprose.TcpClient.create(uri, functions, settings); + return hprose.TcpClient.create(uri, functions, settings); } catch(e) {} try { - return global.hprose.WebSocketClient.create(uri, functions, settings); + return hprose.WebSocketClient.create(uri, functions, settings); } catch(e) {} if (typeof uri === 'string') { @@ -5269,9 +5272,9 @@ Object.defineProperty(Client, 'create', { value: create }); - global.hprose.Client = Client; + hprose.Client = Client; -})(this || [eval][0]('this')); +})(hprose, hprose.global); /**********************************************************\ | | @@ -5287,23 +5290,23 @@ * * * hprose http client for HTML5. * * * - * LastModified: Oct 23, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var Client = global.hprose.Client; - var Future = global.hprose.Future; - var BytesIO = global.hprose.BytesIO; + var Client = hprose.Client; + var Future = hprose.Future; + var BytesIO = hprose.BytesIO; var TimeoutError = global.TimeoutError; var localfile = (global.location !== undefined && global.location.protocol === 'file:'); var XMLHttpRequest = global.XMLHttpRequest; var nativeXHR = (typeof(XMLHttpRequest) !== 'undefined'); var corsSupport = (!localfile && nativeXHR && 'withCredentials' in new XMLHttpRequest()); - var parseuri = global.hprose.parseuri; + var parseuri = hprose.parseuri; function noop(){} @@ -5462,9 +5465,9 @@ Object.defineProperty(HttpClient, 'create', { value: create }); - global.hprose.HttpClient = HttpClient; + hprose.HttpClient = HttpClient; -})(this || [eval][0]('this')); +})(hprose, hprose.global); /**********************************************************\ | | @@ -5485,14 +5488,14 @@ * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var BytesIO = global.hprose.BytesIO; - var Client = global.hprose.Client; - var Future = global.hprose.Future; + var BytesIO = hprose.BytesIO; + var Client = hprose.Client; + var Future = hprose.Future; var TimeoutError = global.TimeoutError; - var parseuri = global.hprose.parseuri; + var parseuri = hprose.parseuri; var WebSocket = global.WebSocket || global.MozWebSocket; @@ -5645,9 +5648,9 @@ Object.defineProperty(WebSocketClient, 'create', { value: create }); - global.hprose.WebSocketClient = WebSocketClient; + hprose.WebSocketClient = WebSocketClient; -})(this || [eval][0]('this')); +})(hprose, hprose.global); /**********************************************************\ | | @@ -5663,15 +5666,15 @@ * * * chrome tcp socket for JavaScript. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var Future = global.hprose.Future; + var Future = hprose.Future; function noop(){} @@ -5827,9 +5830,9 @@ } } }); - global.hprose.ChromeTcpSocket = ChromeTcpSocket; + hprose.ChromeTcpSocket = ChromeTcpSocket; -})(this || [eval][0]('this')); +})(hprose, hprose.global); /**********************************************************\ | | @@ -5845,19 +5848,19 @@ * * * APICloud tcp socket for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var Future = global.hprose.Future; + var Future = hprose.Future; var atob = global.atob; var btoa = global.btoa; - var toUint8Array = global.hprose.toUint8Array; - var toBinaryString = global.hprose.toBinaryString; + var toUint8Array = hprose.toUint8Array; + var toBinaryString = hprose.toBinaryString; function noop(){} @@ -5960,9 +5963,9 @@ } } }); - global.hprose.APICloudTcpSocket = APICloudTcpSocket; + hprose.APICloudTcpSocket = APICloudTcpSocket; -})(this || [eval][0]('this')); +})(hprose, hprose.global); /**********************************************************\ | | @@ -5978,21 +5981,21 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var ChromeTcpSocket = global.hprose.ChromeTcpSocket; - var APICloudTcpSocket = global.hprose.APICloudTcpSocket; - var Client = global.hprose.Client; - var BytesIO = global.hprose.BytesIO; - var Future = global.hprose.Future; + var ChromeTcpSocket = hprose.ChromeTcpSocket; + var APICloudTcpSocket = hprose.APICloudTcpSocket; + var Client = hprose.Client; + var BytesIO = hprose.BytesIO; + var Future = hprose.Future; var TimeoutError = global.TimeoutError; - var parseuri = global.hprose.parseuri; + var parseuri = hprose.parseuri; function noop(){} @@ -6431,9 +6434,9 @@ Object.defineProperty(TcpClient, 'create', { value: create }); - global.hprose.TcpClient = TcpClient; + hprose.TcpClient = TcpClient; -})(this || [eval][0]('this')); +})(hprose, hprose.global); /**********************************************************\ | | @@ -6450,19 +6453,19 @@ * * * jsonrpc client filter for JavaScript. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +/* global JSON */ +(function (hprose) { 'use strict'; - var Tags = global.hprose.Tags; - var BytesIO = global.hprose.BytesIO; - var Writer = global.hprose.Writer; - var Reader = global.hprose.Reader; - var JSON = global.JSON; + var Tags = hprose.Tags; + var BytesIO = hprose.BytesIO; + var Writer = hprose.Writer; + var Reader = hprose.Reader; var s_id = 1; @@ -6526,9 +6529,9 @@ return JSON.stringify(requests[0]); }; - global.hprose.JSONRPCClientFilter = JSONRPCClientFilter; + hprose.JSONRPCClientFilter = JSONRPCClientFilter; -})(this || [eval][0]('this')); +})(hprose); /**********************************************************\ | | @@ -6545,51 +6548,51 @@ * * * hprose CommonJS/AMD/CMD loader for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ /* global define, module */ -(function (global) { +(function (hprose) { 'use strict'; - global.hprose.common = { - Completer: global.hprose.Completer, - Future: global.hprose.Future, - ResultMode: global.hprose.ResultMode + hprose.common = { + Completer: hprose.Completer, + Future: hprose.Future, + ResultMode: hprose.ResultMode }; - global.hprose.io = { - BytesIO: global.hprose.BytesIO, - ClassManager: global.hprose.ClassManager, - Tags: global.hprose.Tags, - RawReader: global.hprose.RawReader, - Reader: global.hprose.Reader, - Writer: global.hprose.Writer, - Formatter: global.hprose.Formatter + hprose.io = { + BytesIO: hprose.BytesIO, + ClassManager: hprose.ClassManager, + Tags: hprose.Tags, + RawReader: hprose.RawReader, + Reader: hprose.Reader, + Writer: hprose.Writer, + Formatter: hprose.Formatter }; - global.hprose.client = { - Client: global.hprose.Client, - HttpClient: global.hprose.HttpClient, - TcpClient: global.hprose.TcpClient, - WebSocketClient: global.hprose.WebSocketClient + hprose.client = { + Client: hprose.Client, + HttpClient: hprose.HttpClient, + TcpClient: hprose.TcpClient, + WebSocketClient: hprose.WebSocketClient }; - global.hprose.filter = { - JSONRPCClientFilter: global.hprose.JSONRPCClientFilter + hprose.filter = { + JSONRPCClientFilter: hprose.JSONRPCClientFilter }; if (typeof define === 'function') { if (define.cmd) { - define('hprose', [], global.hprose); + define('hprose', [], hprose); } else if (define.amd) { - define('hprose', [], function() { return global.hprose; }); + define('hprose', [], function() { return hprose; }); } } if (typeof module === 'object') { - module.exports = global.hprose; + module.exports = hprose; } -})(this || [eval][0]('this')); +})(hprose); diff --git a/gulpfile.js b/gulpfile.js index 765e741..5e4a91b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -34,9 +34,9 @@ gulp.task('concat', ['clear'], function() { 'src/TcpClient.js', 'src/JSONRPCClientFilter.js', 'src/Loader.js']) + .pipe(concat('hprose-html5.src.js')) .pipe(jshint()) .pipe(jshint.reporter()) - .pipe(concat('hprose-html5.src.js')) .pipe(gulp.dest('dist')); }); diff --git a/src/APICloudTcpSocket.js b/src/APICloudTcpSocket.js index d791900..c943a3a 100644 --- a/src/APICloudTcpSocket.js +++ b/src/APICloudTcpSocket.js @@ -12,19 +12,19 @@ * * * APICloud tcp socket for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var Future = global.hprose.Future; + var Future = hprose.Future; var atob = global.atob; var btoa = global.btoa; - var toUint8Array = global.hprose.toUint8Array; - var toBinaryString = global.hprose.toBinaryString; + var toUint8Array = hprose.toUint8Array; + var toBinaryString = hprose.toBinaryString; function noop(){} @@ -127,6 +127,6 @@ } } }); - global.hprose.APICloudTcpSocket = APICloudTcpSocket; + hprose.APICloudTcpSocket = APICloudTcpSocket; -})(this || [eval][0]('this')); +})(hprose, hprose.global); diff --git a/src/Base64.js b/src/Base64.js index d5ed0dc..d712887 100644 --- a/src/Base64.js +++ b/src/Base64.js @@ -12,7 +12,7 @@ * * * Base64 for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -131,4 +131,4 @@ })(); } -})(this || [eval][0]('this')); +})(hprose.global); diff --git a/src/BytesIO.js b/src/BytesIO.js index 939fd27..fea8658 100644 --- a/src/BytesIO.js +++ b/src/BytesIO.js @@ -13,15 +13,15 @@ * * * hprose BytesIO for HTML5. * * * - * LastModified: Oct 23, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, undefined) { 'use strict'; - var toBinaryString = global.hprose.toBinaryString; + var toBinaryString = hprose.toBinaryString; var _EMPTY_BYTES = new Uint8Array(0); var _INIT_SIZE = 1024; @@ -594,6 +594,6 @@ Object.defineProperty(BytesIO, 'toString', { value: toString }); - global.hprose.BytesIO = BytesIO; + hprose.BytesIO = BytesIO; -})(this || [eval][0]('this')); +})(hprose); diff --git a/src/ChromeTcpSocket.js b/src/ChromeTcpSocket.js index e8dbd69..f7d10b7 100644 --- a/src/ChromeTcpSocket.js +++ b/src/ChromeTcpSocket.js @@ -12,15 +12,15 @@ * * * chrome tcp socket for JavaScript. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var Future = global.hprose.Future; + var Future = hprose.Future; function noop(){} @@ -176,6 +176,6 @@ } } }); - global.hprose.ChromeTcpSocket = ChromeTcpSocket; + hprose.ChromeTcpSocket = ChromeTcpSocket; -})(this || [eval][0]('this')); +})(hprose, hprose.global); diff --git a/src/ClassManager.js b/src/ClassManager.js index 61e4b2f..8e8e165 100644 --- a/src/ClassManager.js +++ b/src/ClassManager.js @@ -13,12 +13,12 @@ * * * hprose ClassManager for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +(function (hprose, global) { 'use strict'; var WeakMap = global.WeakMap; @@ -39,14 +39,14 @@ return classCache[alias]; } - global.hprose.ClassManager = Object.create(null, { + hprose.ClassManager = Object.create(null, { register: { value: register }, getClassAlias: { value: getClassAlias }, getClass: { value: getClass } }); - global.hprose.register = register; + hprose.register = register; register(Object, 'Object'); -})(this || [eval][0]('this')); +})(hprose, hprose.global); diff --git a/src/Client.js b/src/Client.js index 1d7369b..7979566 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,23 +12,23 @@ * * * hprose client for HTML5. * * * - * LastModified: Nov 14, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; var setImmediate = global.setImmediate; - var Tags = global.hprose.Tags; - var ResultMode = global.hprose.ResultMode; - var BytesIO = global.hprose.BytesIO; - var Writer = global.hprose.Writer; - var Reader = global.hprose.Reader; - var Future = global.hprose.Future; - var parseuri = global.hprose.parseuri; - var isObjectEmpty = global.hprose.isObjectEmpty; + var Tags = hprose.Tags; + var ResultMode = hprose.ResultMode; + var BytesIO = hprose.BytesIO; + var Writer = hprose.Writer; + var Reader = hprose.Reader; + var Future = hprose.Future; + var parseuri = hprose.parseuri; + var isObjectEmpty = hprose.isObjectEmpty; var GETFUNCTIONS = new Uint8Array(1); GETFUNCTIONS[0] = Tags.TagEnd; @@ -1183,15 +1183,15 @@ function create(uri, functions, settings) { try { - return global.hprose.HttpClient.create(uri, functions, settings); + return hprose.HttpClient.create(uri, functions, settings); } catch(e) {} try { - return global.hprose.TcpClient.create(uri, functions, settings); + return hprose.TcpClient.create(uri, functions, settings); } catch(e) {} try { - return global.hprose.WebSocketClient.create(uri, functions, settings); + return hprose.WebSocketClient.create(uri, functions, settings); } catch(e) {} if (typeof uri === 'string') { @@ -1206,6 +1206,6 @@ Object.defineProperty(Client, 'create', { value: create }); - global.hprose.Client = Client; + hprose.Client = Client; -})(this || [eval][0]('this')); +})(hprose, hprose.global); diff --git a/src/Formatter.js b/src/Formatter.js index 00116f2..ed8396f 100644 --- a/src/Formatter.js +++ b/src/Formatter.js @@ -13,17 +13,17 @@ * * * hprose Formatter for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +(function (hprose) { 'use strict'; - var BytesIO = global.hprose.BytesIO; - var Writer = global.hprose.Writer; - var Reader = global.hprose.Reader; + var BytesIO = hprose.BytesIO; + var Writer = hprose.Writer; + var Reader = hprose.Reader; function serialize(value, simple) { var stream = new BytesIO(); @@ -39,15 +39,15 @@ return new Reader(stream, simple, useHarmonyMap).unserialize(); } - global.hprose.Formatter = { + hprose.Formatter = { serialize: function (value, simple) { return serialize(value, simple).bytes; }, unserialize: unserialize }; - global.hprose.serialize = serialize; + hprose.serialize = serialize; - global.hprose.unserialize = unserialize; + hprose.unserialize = unserialize; -})(this || [eval][0]('this')); +})(hprose); diff --git a/src/Future.js b/src/Future.js index 6bb3dc7..b29844c 100644 --- a/src/Future.js +++ b/src/Future.js @@ -18,7 +18,7 @@ * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; var PENDING = 0; @@ -817,12 +817,12 @@ } } }); - global.hprose.Future = Future; + hprose.Future = Future; - global.hprose.thunkify = thunkify; - global.hprose.promisify = promisify; - global.hprose.co = co; - global.hprose.co.wrap = global.hprose.wrap = wrap; + hprose.thunkify = thunkify; + hprose.promisify = promisify; + hprose.co = co; + hprose.co.wrap = hprose.wrap = wrap; function Completer() { var future = new Future(); @@ -836,13 +836,13 @@ }); } - global.hprose.Completer = Completer; + hprose.Completer = Completer; - global.hprose.resolved = value; + hprose.resolved = value; - global.hprose.rejected = error; + hprose.rejected = error; - global.hprose.deferred = function() { + hprose.deferred = function() { var self = new Future(); return Object.create(null, { promise: { value: self }, @@ -853,19 +853,21 @@ if (hasPromise) { return; } - global.Promise = function(executor) { + function MyPromise(executor) { Future.call(this); executor(this.resolve, this.reject); - }; + } - global.Promise.prototype = Object.create(Future.prototype); - global.Promise.prototype.constructor = Future; + MyPromise.prototype = Object.create(Future.prototype); + MyPromise.prototype.constructor = Future; - Object.defineProperties(global.Promise, { + Object.defineProperties(MyPromise, { all: { value: all }, race: { value: race }, resolve: { value: value }, reject: { value: error } }); -})(this || [eval][0]('this')); + global.Promise = MyPromise; + +})(hprose, hprose.global); diff --git a/src/HarmonyMaps.js b/src/HarmonyMaps.js index f1c477e..5be6667 100644 --- a/src/HarmonyMaps.js +++ b/src/HarmonyMaps.js @@ -13,7 +13,7 @@ * * * Harmony Maps for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -297,4 +297,4 @@ return m; }; } -})(this || [eval][0]('this')); +})(hprose.global); diff --git a/src/Helper.js b/src/Helper.js index 145c7f2..8fcae53 100644 --- a/src/Helper.js +++ b/src/Helper.js @@ -13,12 +13,12 @@ * * * hprose helper for HTML5. * * * - * LastModified: Oct 12, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, undefined) { 'use strict'; function generic(method) { @@ -104,11 +104,11 @@ return true; } - global.hprose.generic = generic; - global.hprose.toBinaryString = toBinaryString; - global.hprose.toUint8Array = toUint8Array; - global.hprose.toArray = toArray; - global.hprose.parseuri = parseuri; - global.hprose.isObjectEmpty = isObjectEmpty; + hprose.generic = generic; + hprose.toBinaryString = toBinaryString; + hprose.toUint8Array = toUint8Array; + hprose.toArray = toArray; + hprose.parseuri = parseuri; + hprose.isObjectEmpty = isObjectEmpty; -})(this || [eval][0]('this')); +})(hprose); diff --git a/src/HttpClient.js b/src/HttpClient.js index 5be350d..d8049c5 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,23 +12,23 @@ * * * hprose http client for HTML5. * * * - * LastModified: Oct 23, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var Client = global.hprose.Client; - var Future = global.hprose.Future; - var BytesIO = global.hprose.BytesIO; + var Client = hprose.Client; + var Future = hprose.Future; + var BytesIO = hprose.BytesIO; var TimeoutError = global.TimeoutError; var localfile = (global.location !== undefined && global.location.protocol === 'file:'); var XMLHttpRequest = global.XMLHttpRequest; var nativeXHR = (typeof(XMLHttpRequest) !== 'undefined'); var corsSupport = (!localfile && nativeXHR && 'withCredentials' in new XMLHttpRequest()); - var parseuri = global.hprose.parseuri; + var parseuri = hprose.parseuri; function noop(){} @@ -187,6 +187,6 @@ Object.defineProperty(HttpClient, 'create', { value: create }); - global.hprose.HttpClient = HttpClient; + hprose.HttpClient = HttpClient; -})(this || [eval][0]('this')); +})(hprose, hprose.global); diff --git a/src/Init.js b/src/Init.js index 0c759bc..7055d01 100644 --- a/src/Init.js +++ b/src/Init.js @@ -13,14 +13,19 @@ * * * hprose init for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { - 'use strict'; +var hprose = Object.create(null); - global.hprose = Object.create(null); - -})(this || [eval][0]('this')); +/* global global, window, self */ +hprose.global = ( + // Among the various tricks for obtaining a reference to the global + // object, this seems to be the most reliable technique that does not + // use indirect eval (which violates Content Security Policy). + typeof global === "object" ? global : + typeof window === "object" ? window : + typeof self === "object" ? self : this +); diff --git a/src/JSONRPCClientFilter.js b/src/JSONRPCClientFilter.js index 83f4dbb..28a85fd 100644 --- a/src/JSONRPCClientFilter.js +++ b/src/JSONRPCClientFilter.js @@ -13,19 +13,19 @@ * * * jsonrpc client filter for JavaScript. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +/* global JSON */ +(function (hprose) { 'use strict'; - var Tags = global.hprose.Tags; - var BytesIO = global.hprose.BytesIO; - var Writer = global.hprose.Writer; - var Reader = global.hprose.Reader; - var JSON = global.JSON; + var Tags = hprose.Tags; + var BytesIO = hprose.BytesIO; + var Writer = hprose.Writer; + var Reader = hprose.Reader; var s_id = 1; @@ -89,6 +89,6 @@ return JSON.stringify(requests[0]); }; - global.hprose.JSONRPCClientFilter = JSONRPCClientFilter; + hprose.JSONRPCClientFilter = JSONRPCClientFilter; -})(this || [eval][0]('this')); +})(hprose); diff --git a/src/Loader.js b/src/Loader.js index 1514af0..3e2bdf5 100644 --- a/src/Loader.js +++ b/src/Loader.js @@ -13,51 +13,51 @@ * * * hprose CommonJS/AMD/CMD loader for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ /* global define, module */ -(function (global) { +(function (hprose) { 'use strict'; - global.hprose.common = { - Completer: global.hprose.Completer, - Future: global.hprose.Future, - ResultMode: global.hprose.ResultMode + hprose.common = { + Completer: hprose.Completer, + Future: hprose.Future, + ResultMode: hprose.ResultMode }; - global.hprose.io = { - BytesIO: global.hprose.BytesIO, - ClassManager: global.hprose.ClassManager, - Tags: global.hprose.Tags, - RawReader: global.hprose.RawReader, - Reader: global.hprose.Reader, - Writer: global.hprose.Writer, - Formatter: global.hprose.Formatter + hprose.io = { + BytesIO: hprose.BytesIO, + ClassManager: hprose.ClassManager, + Tags: hprose.Tags, + RawReader: hprose.RawReader, + Reader: hprose.Reader, + Writer: hprose.Writer, + Formatter: hprose.Formatter }; - global.hprose.client = { - Client: global.hprose.Client, - HttpClient: global.hprose.HttpClient, - TcpClient: global.hprose.TcpClient, - WebSocketClient: global.hprose.WebSocketClient + hprose.client = { + Client: hprose.Client, + HttpClient: hprose.HttpClient, + TcpClient: hprose.TcpClient, + WebSocketClient: hprose.WebSocketClient }; - global.hprose.filter = { - JSONRPCClientFilter: global.hprose.JSONRPCClientFilter + hprose.filter = { + JSONRPCClientFilter: hprose.JSONRPCClientFilter }; if (typeof define === 'function') { if (define.cmd) { - define('hprose', [], global.hprose); + define('hprose', [], hprose); } else if (define.amd) { - define('hprose', [], function() { return global.hprose; }); + define('hprose', [], function() { return hprose; }); } } if (typeof module === 'object') { - module.exports = global.hprose; + module.exports = hprose; } -})(this || [eval][0]('this')); +})(hprose); diff --git a/src/Polyfill.js b/src/Polyfill.js index 7f6556f..8c4a989 100644 --- a/src/Polyfill.js +++ b/src/Polyfill.js @@ -13,12 +13,12 @@ * * * Polyfill for JavaScript. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (generic, undefined) { 'use strict'; /* Function */ if (!Function.prototype.bind) { @@ -349,8 +349,6 @@ }; })() }); } - /* Generic methods */ - var generic = global.hprose.generic; function genericMethods(obj, properties) { var proto = obj.prototype; @@ -413,4 +411,4 @@ 'slice' ]); -})(this || [eval][0]('this')); +})(hprose.generic); diff --git a/src/Reader.js b/src/Reader.js index a5c6e96..4ff8e05 100644 --- a/src/Reader.js +++ b/src/Reader.js @@ -13,18 +13,18 @@ * * * hprose Reader for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; var Map = global.Map; - var BytesIO = global.hprose.BytesIO; - var Tags = global.hprose.Tags; - var ClassManager = global.hprose.ClassManager; + var BytesIO = hprose.BytesIO; + var Tags = hprose.Tags; + var ClassManager = hprose.ClassManager; function unexpectedTag(tag, expectTags) { if (tag && expectTags) { @@ -176,7 +176,7 @@ }); } - global.hprose.RawReader = RawReader; + hprose.RawReader = RawReader; var fakeReaderRefer = Object.create(null, { set: { value: function() {} }, @@ -738,5 +738,5 @@ } } }); - global.hprose.Reader = Reader; -})(this || [eval][0]('this')); + hprose.Reader = Reader; +})(hprose, hprose.global); diff --git a/src/ResultMode.js b/src/ResultMode.js index 1721ce9..01d3e1e 100644 --- a/src/ResultMode.js +++ b/src/ResultMode.js @@ -13,23 +13,23 @@ * * * hprose ResultMode for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +(function (hprose) { 'use strict'; - global.hprose.ResultMode = { + hprose.ResultMode = { Normal: 0, Serialized: 1, Raw: 2, RawWithEndTag: 3 }; - global.hprose.Normal = global.hprose.ResultMode.Normal; - global.hprose.Serialized = global.hprose.ResultMode.Serialized; - global.hprose.Raw = global.hprose.ResultMode.Raw; - global.hprose.RawWithEndTag = global.hprose.ResultMode.RawWithEndTag; + hprose.Normal = hprose.ResultMode.Normal; + hprose.Serialized = hprose.ResultMode.Serialized; + hprose.Raw = hprose.ResultMode.Raw; + hprose.RawWithEndTag = hprose.ResultMode.RawWithEndTag; -})(this || [eval][0]('this')); +})(hprose); diff --git a/src/Tags.js b/src/Tags.js index 49e4a64..66b85d5 100644 --- a/src/Tags.js +++ b/src/Tags.js @@ -12,15 +12,15 @@ * * * hprose tags enum for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global) { +(function (hprose) { 'use strict'; - global.hprose.Tags = { + hprose.Tags = { /* Serialize Tags */ TagInteger : 0x69, // 'i' TagLong : 0x6C, // 'l' @@ -59,4 +59,4 @@ TagError : 0x45, // 'E' TagEnd : 0x7A // 'z' }; -})(this || [eval][0]('this')); +})(hprose); diff --git a/src/TcpClient.js b/src/TcpClient.js index 1ba98ab..1816e3e 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,21 +12,21 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var ChromeTcpSocket = global.hprose.ChromeTcpSocket; - var APICloudTcpSocket = global.hprose.APICloudTcpSocket; - var Client = global.hprose.Client; - var BytesIO = global.hprose.BytesIO; - var Future = global.hprose.Future; + var ChromeTcpSocket = hprose.ChromeTcpSocket; + var APICloudTcpSocket = hprose.APICloudTcpSocket; + var Client = hprose.Client; + var BytesIO = hprose.BytesIO; + var Future = hprose.Future; var TimeoutError = global.TimeoutError; - var parseuri = global.hprose.parseuri; + var parseuri = hprose.parseuri; function noop(){} @@ -465,6 +465,6 @@ Object.defineProperty(TcpClient, 'create', { value: create }); - global.hprose.TcpClient = TcpClient; + hprose.TcpClient = TcpClient; -})(this || [eval][0]('this')); +})(hprose, hprose.global); diff --git a/src/TimeoutError.js b/src/TimeoutError.js index b9cf3d0..7ca5787 100644 --- a/src/TimeoutError.js +++ b/src/TimeoutError.js @@ -13,23 +13,21 @@ * * * TimeoutError for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ (function(global) { - if (typeof global.TimeoutError !== 'function') { - var TimeoutError = function(message) { - Error.call(this); - this.message = message; - this.name = TimeoutError.name; - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, TimeoutError); - } + function TimeoutError(message) { + Error.call(this); + this.message = message; + this.name = TimeoutError.name; + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, TimeoutError); } - TimeoutError.prototype = Object.create(Error.prototype); - TimeoutError.prototype.constructor = TimeoutError; - global.TimeoutError = TimeoutError; } -})(this || [eval][0]('this')); \ No newline at end of file + TimeoutError.prototype = Object.create(Error.prototype); + TimeoutError.prototype.constructor = TimeoutError; + global.TimeoutError = TimeoutError; +})(hprose.global); \ No newline at end of file diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index 1791ecb..f4e264f 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -17,14 +17,14 @@ * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; - var BytesIO = global.hprose.BytesIO; - var Client = global.hprose.Client; - var Future = global.hprose.Future; + var BytesIO = hprose.BytesIO; + var Client = hprose.Client; + var Future = hprose.Future; var TimeoutError = global.TimeoutError; - var parseuri = global.hprose.parseuri; + var parseuri = hprose.parseuri; var WebSocket = global.WebSocket || global.MozWebSocket; @@ -177,6 +177,6 @@ Object.defineProperty(WebSocketClient, 'create', { value: create }); - global.hprose.WebSocketClient = WebSocketClient; + hprose.WebSocketClient = WebSocketClient; -})(this || [eval][0]('this')); +})(hprose, hprose.global); diff --git a/src/Writer.js b/src/Writer.js index 8320d76..16eba46 100644 --- a/src/Writer.js +++ b/src/Writer.js @@ -13,18 +13,18 @@ * * * hprose Writer for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ -(function (global, undefined) { +(function (hprose, global, undefined) { 'use strict'; var Map = global.Map; - var BytesIO = global.hprose.BytesIO; - var Tags = global.hprose.Tags; - var ClassManager = global.hprose.ClassManager; + var BytesIO = hprose.BytesIO; + var Tags = hprose.Tags; + var ClassManager = hprose.ClassManager; function getClassName(obj) { var cls = obj.constructor; @@ -552,6 +552,6 @@ } } }); - global.hprose.Writer = Writer; + hprose.Writer = Writer; -})(this || [eval][0]('this')); +})(hprose, hprose.global); diff --git a/src/setImmediate.js b/src/setImmediate.js index 8bc1795..0dbbc6d 100644 --- a/src/setImmediate.js +++ b/src/setImmediate.js @@ -13,7 +13,7 @@ * * * setImmediate for HTML5. * * * - * LastModified: Sep 29, 2016 * + * LastModified: Nov 18, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -179,4 +179,4 @@ } attachTo.clearImmediate = clear; -})(this || [eval][0]('this')); +})(hprose.global); From 181424d4c053f662d7cb63de917f965dc31e5ad7 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sat, 19 Nov 2016 00:03:28 +0800 Subject: [PATCH 63/86] Improved Future.complete --- bower.json | 2 +- dist/hprose-html5.js | 6 +++--- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 5 +++-- package.json | 2 +- src/CopyRight.js | 2 +- src/Future.js | 3 ++- 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/bower.json b/bower.json index 6090c48..07fb35c 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.26", + "version": "2.0.27", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index ea8b2fd..2e841d6 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.26 +// Hprose for HTML5 v2.0.27 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),v=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=v,a+=v,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&J(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return"function"==typeof e.then}function a(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return $(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function u(e){var t=new n;return t.reject(e),t}function s(e){var t=new n;return t.resolve(e),t}function c(e){try{var t=e();return s(t)}catch(e){return u(e)}}function f(e){var t=new n;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){O(e).then(function(e){i[t]=e,0===--r&&o.resolve(i)},o.reject)}),o})}function v(){return h(arguments)}function p(e){return e=o(e)?e:s(e),e.then(function(e){var t=new n;return Array.forEach(e,function(e){O(e).fill(t)}),t})}function g(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new n;return Array.forEach(e,function(e,t){O(e).then(o.resolve,function(e){i[t]=e,0===--r&&o.reject(i)})}),o})}function y(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){var n=O(e);n.whenComplete(function(){i[t]=n.inspect(),0===--r&&o.resolve(i)})}),o})}function d(e){var t=function(){return this}(),r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function b(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||m(t.prototype))}function T(e){if(b(e)||m(e))return S(e);var t=function(){return this}(),r=new n;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?r.reject(e):r.resolve(e):e?r.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void r.resolve(t))}),r}function _(e){return function(){var t=Array.slice(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function j(e){return function(){var t=Array.slice(arguments,0),r=new n;t.push(function(e,t){return arguments.length<2?e instanceof Error?r.reject(e):r.resolve(e):e?r.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void r.resolve(t))});try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function O(e){return e?o(e)?e:b(e)||m(e)?S(e):s(e):s(e)}function S(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){return u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?T(e.value):O(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var u=new n;return e&&"function"==typeof e.next?(t(),u):u.resolve(e)}function E(e,t){return function(){return t=t||this,h(arguments).then(function(r){var n=e.apply(t,r);return b(n)||m(n)?S.call(t,n):n})}}function B(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.forEach(t,r)})}function A(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.every(t,r)})}function k(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.some(t,r)})}function C(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.filter(t,r)})}function I(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.map(t,r)})}function x(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function R(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function P(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function M(e,t,n){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function U(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function L(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.find(t,r)})}function N(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.findIndex(t,r)})}function F(e,t,r){J(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function W(e,t,r){e?F(e,t,r):t.resolve(r)}function D(e,t,r){e?F(e,t,r):t.reject(r)}function z(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==H}}})}function q(e){n.call(this),e(this.resolve,this.reject)}var H=0,G=1,Q=2,Y="Promise"in t,J=t.setImmediate,$=t.setTimeout,K=t.clearTimeout,V=t.TimeoutError;Object.defineProperties(n,{delayed:{value:a},error:{value:u},sync:{value:c},value:{value:s},all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u},promise:{value:f},isFuture:{value:i},isPromise:{value:o},toPromise:{value:O},join:{value:v},any:{value:g},settle:{value:y},attempt:{value:d},run:{value:w},thunkify:{value:_},promisify:{value:j},co:{value:S},wrap:{value:E},forEach:{value:B},every:{value:A},some:{value:k},filter:{value:C},map:{value:I},reduce:{value:x},reduceRight:{value:R},indexOf:{value:P},lastIndexOf:{value:M},includes:{value:U},find:{value:L},findIndex:{value:N}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:H,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===H){this._state=G,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();W(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===H){this._state=Q,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();D(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===G?W(e,r,this._value):this._state===Q?D(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){J(function(){throw e})})}},inspect:{value:function(){switch(this._state){case H:return{state:"pending"};case G:return{state:"fulfilled",value:this._value};case Q:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=$(function(){r.reject(t||new V("timeout"))},e);return this.whenComplete(function(){K(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){$(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?x(this,e,t):x(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?R(this,e,t):R(this,e)}},indexOf:{value:function(e,t){return P(this,e,t)}},lastIndexOf:{value:function(e,t){return M(this,e,t)}},includes:{value:function(e,t){return U(this,e,t)}},find:{value:function(e,t){return L(this,e,t)}},findIndex:{value:function(e,t){return N(this,e,t)}}}),e.Future=n,e.thunkify=_,e.promisify=j,e.co=S,e.co.wrap=e.wrap=E,e.Completer=z,e.resolved=s,e.rejected=u,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},Y||(q.prototype=Object.create(n.prototype),q.prototype.constructor=n,Object.defineProperties(q,{all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u}}),t.Promise=q)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[v,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,v=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?v:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return v.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?v:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length, -this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function v(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function p(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?v.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):v.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?v.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),v.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),v=u.readByte();if(v===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),v=u.readByte(),v===s.TagArgument){l.reset();var p=l.readList();C(p,t),v=u.readByte()}}else v===s.TagError&&(a=new Error(l.readString()),v=u.readByte());v!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=v.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return v.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),v.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var v=null,p=null,g=e[++o].context.mode;if(g>=c.Raw&&(v=new f),l===s.TagResult){if(g===c.Serialized?v=u.readRaw():g>=c.Raw?(v.writeByte(s.TagResult),v.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),v=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)v.writeByte(s.TagArgument),v.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(v.writeByte(s.TagError),v.write(u.readRaw())):(u.reset(),p=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&v.writeByte(s.TagEnd),e[o].result=v.bytes):e[o].result=v,e[o].error=p}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return v.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return v.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=v.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function ve(){return Je}function pe(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else v.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return v.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},p)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new v,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=p,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var vt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),vt}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:ve,set:pe},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:vt},beforeFilter:{value:pt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,v=e.Future,p=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){ +var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),v=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=v,a+=v,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&J(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return"function"==typeof e.then}function a(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return $(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function u(e){var t=new n;return t.reject(e),t}function s(e){var t=new n;return t.resolve(e),t}function c(e){try{var t=e();return s(t)}catch(e){return u(e)}}function f(e){var t=new n;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){O(e).then(function(e){i[t]=e,0===--r&&o.resolve(i)},o.reject)}),o})}function v(){return h(arguments)}function p(e){return e=o(e)?e:s(e),e.then(function(e){var t=new n;return Array.forEach(e,function(e){O(e).fill(t)}),t})}function g(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new n;return Array.forEach(e,function(e,t){O(e).then(o.resolve,function(e){i[t]=e,0===--r&&o.reject(i)})}),o})}function y(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){var n=O(e);n.whenComplete(function(){i[t]=n.inspect(),0===--r&&o.resolve(i)})}),o})}function d(e){var t=function(){return this}(),r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function b(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||m(t.prototype))}function T(e){if(b(e)||m(e))return S(e);var t=function(){return this}(),r=new n;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?r.reject(e):r.resolve(e):e?r.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void r.resolve(t))}),r}function _(e){return function(){var t=Array.slice(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function j(e){return function(){var t=Array.slice(arguments,0),r=new n;t.push(function(e,t){return arguments.length<2?e instanceof Error?r.reject(e):r.resolve(e):e?r.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void r.resolve(t))});try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function O(e){return e?o(e)?e:b(e)||m(e)?S(e):s(e):s(e)}function S(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){return u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?T(e.value):O(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var u=new n;return e&&"function"==typeof e.next?(t(),u):u.resolve(e)}function E(e,t){return function(){return t=t||this,h(arguments).then(function(r){var n=e.apply(t,r);return b(n)||m(n)?S.call(t,n):n})}}function B(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.forEach(t,r)})}function A(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.every(t,r)})}function k(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.some(t,r)})}function C(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.filter(t,r)})}function I(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.map(t,r)})}function x(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function R(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function P(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function M(e,t,n){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function U(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function L(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.find(t,r)})}function N(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.findIndex(t,r)})}function F(e,t,r){J(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function W(e,t,r){e?F(e,t,r):t.resolve(r)}function D(e,t,r){e?F(e,t,r):t.reject(r)}function z(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==H}}})}function q(e){n.call(this),e(this.resolve,this.reject)}var H=0,G=1,Q=2,Y="Promise"in t,J=t.setImmediate,$=t.setTimeout,K=t.clearTimeout,V=t.TimeoutError;Object.defineProperties(n,{delayed:{value:a},error:{value:u},sync:{value:c},value:{value:s},all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u},promise:{value:f},isFuture:{value:i},isPromise:{value:o},toPromise:{value:O},join:{value:v},any:{value:g},settle:{value:y},attempt:{value:d},run:{value:w},thunkify:{value:_},promisify:{value:j},co:{value:S},wrap:{value:E},forEach:{value:B},every:{value:A},some:{value:k},filter:{value:C},map:{value:I},reduce:{value:x},reduceRight:{value:R},indexOf:{value:P},lastIndexOf:{value:M},includes:{value:U},find:{value:L},findIndex:{value:N}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:H,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===H){this._state=G,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();W(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===H){this._state=Q,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();D(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===G?W(e,r,this._value):this._state===Q?D(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){J(function(){throw e})})}},inspect:{value:function(){switch(this._state){case H:return{state:"pending"};case G:return{state:"fulfilled",value:this._value};case Q:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=$(function(){r.reject(t||new V("timeout"))},e);return this.whenComplete(function(){K(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){$(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?x(this,e,t):x(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?R(this,e,t):R(this,e)}},indexOf:{value:function(e,t){return P(this,e,t)}},lastIndexOf:{value:function(e,t){return M(this,e,t)}},includes:{value:function(e,t){return U(this,e,t)}},find:{value:function(e,t){return L(this,e,t)}},findIndex:{value:function(e,t){return N(this,e,t)}}}),e.Future=n,e.thunkify=_,e.promisify=j,e.co=S,e.co.wrap=e.wrap=E,e.Completer=z,e.resolved=s,e.rejected=u,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},Y||(q.prototype=Object.create(n.prototype),q.prototype.constructor=n,Object.defineProperties(q,{all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u}}),t.Promise=q)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[v,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,v=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?v:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return v.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?v:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length), +this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function v(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function p(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?v.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):v.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?v.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),v.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),v=u.readByte();if(v===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),v=u.readByte(),v===s.TagArgument){l.reset();var p=l.readList();C(p,t),v=u.readByte()}}else v===s.TagError&&(a=new Error(l.readString()),v=u.readByte());v!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=v.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return v.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),v.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var v=null,p=null,g=e[++o].context.mode;if(g>=c.Raw&&(v=new f),l===s.TagResult){if(g===c.Serialized?v=u.readRaw():g>=c.Raw?(v.writeByte(s.TagResult),v.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),v=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)v.writeByte(s.TagArgument),v.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(v.writeByte(s.TagError),v.write(u.readRaw())):(u.reset(),p=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&v.writeByte(s.TagEnd),e[o].result=v.bytes):e[o].result=v,e[o].error=p}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return v.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return v.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=v.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function ve(){return Je}function pe(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else v.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return v.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},p)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new v,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=p,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var vt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),vt}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:ve,set:pe},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:vt},beforeFilter:{value:pt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,v=e.Future,p=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){ throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?v(e,r):l(e,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,v="undefined"!=typeof h,p=!l&&v&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function v(e){j.resolve(e)}function p(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=v,O.onmessage=p,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function p(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);v.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:p},sendAndReceive:{value:y}})}function c(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,v=e.Client,p=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new p(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new p(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===S){if("throw"===o)throw a;return p()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function v(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),u=y.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),E}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:v(e),resultName:t,nextLoc:r},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 0d06e07..9f0f809 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQCwSAEAAAAAAAA7GEqmJ4ouDrh87LJR5ca3ughUka5Xb0yfyaXbFa9q+FFOwpIyey7AN3dcR71YzF/dbs2KlSZ+F1t4VsPuHZzy+jkHOepMaK9vyqoFiCYQ+ypkZZmGkD40/zYNYAWB8Nih0vIM1T36alYtRgqUg7zFwfO2pQJZhu/+u0EDKcg+2NRYlqx2uz4NPl2yVMZ24jpHvf7wKxNexoEJq0dQUjsS07YG03J6K+fTwzU8x8iFTRz16BwvwHjSy30vqc1r/zIRC56k84u3dMpFgvh3uAMNgzNPej8V+fIiwTmBJyPyYvsoz6vQ/QjJRkI7UoFN6PH6c+95GA+7/0uUw8nXykQUzihFI8Zh+2CjM57FpSBfVrX8RokJx1k459QUw67GBya+4ozGmjB5DIa9epS3lGqL4yDsDN/6QdupxlaMLq7TWNUMO31wSFC6K5ciXR9sJan1I67bpzs15p4cxlo/6pCevUtfLejUcICg0HS2Ew2coExh8i4DPXm7jMTgbNZTT8N2cjFbuJxtZAmOYUz3TfpbcS6kgtE5SktOKmGaZ+rBhAGGwfXrXO3SO/VcvHPGYoFzNrhDjpF6RYzDryiq8bBMV/D+cRT3XCTv0C2NDvxeVVU8/JqMcO77iu/Qhvd+QE4HlxA8kZDnEG4+PSxHtbQscy8pwbIcMfI5rpFnmFhkJE5G02dXUjmP6mWHiCFI0S+TMN2iPxE0+A/8mv+1XEcYRmg4pBeidlMVggJePSGUaUCheb4POs7VUxHl/e70R+fMwjcLKhMtnFqbN+yK+WbKIj25b2vZ2BMAnfk9XD85iGaQOSLbsOa5l9/Gu3Bip68OyjA2Sdf6CdOGf29QDu/+PszUzarcYbCeVOe/rpYI5ku8xAZPFG5BDa54dnr3/lMLad35PJO7Ql8hurManYOiPBPUaBzlTvV1es9nDBOAPSgewftdv4HD7QbzT9XJ3fuiFAWnq2vL0qREZclypi4yFlbQe06IB0vsKVAxgqlXwautTmlh9VxfYK4Y+1/q/VCZXFpLmM19wVzp8Zg5IQ/XKNhqXYg4V5vSyde3AmJrcoWAMUi0Jj+f7Jc4kZO0HnaVTIA5hQSGP6EXOoYcraKx+l74vRQ2G3jbVkpHYQZKL5+ce6ucdz1/BdJ/z4XyaRZYMZbb9Vo/nxL915pu/Ox5Tv4n4kxAyj2tLSZTg38+Db/xyMv49yLc0WA036GnCFyh9bphNXoGwfkOyTU2w/B2VXX7EJPj5PAx3Grpk5uoMoaOlwr7gz3G3+k79oWkkO90I4pZXvhkb/puiyYaDIeyhf0XvkDkbmR6R1MIoJvvoFIoCErGzVzpNwJ4UTJdFuNIwOpFDnnhkERFHhxVDfFjqzHBiLtuN0sxeizz+1vzDDEKtKfWNKJib2U5yr9Z9iE0SNyRPJm8/HujwxrKymmInGFw4YipDK3u90w0D5zryG5RYez+6tSUbHyPe77EhaWQcIDQ+N/O8VV40nF1cEz6ModEN4KB9/QGEh4TM4ARvMLz2DF9UCRZRUD0EmPKu+ATFsqaotcR0TLX3SjrA+tQOpbZ2kyChVcn31EDq1rm6eaafcTWQw7Jqx//4gBSby6b4nTLV1gs4Ne4dYtB68dT1P4/QBsk2d8Ydsog7MIFCS84wYb/A9+QcOOBj7IYgKcniJsOd0SOTdxz6lyHTEQQas1yWQO+uNvNsE6zpkKZZGT71WVDUJlW40vxY+j8EQGm9uE2DBFPb93bTo77cMhCYb3Fp9v9Hcsxe9HOhTtCiYGK7IG9IIT5dbggCXqQyR5tH/nNdGu7UYkIhoQ4Eb9zACq5+lqf5gsL6gjwGzG4s9FB6Y3Vx4TaOYXdiBNShrdsQKduuxALmwyUhrHppTykRgmxv7fxiAaKPrvYr8+39OebpgEAbgX5bdKehKzieXKZkGdBjWHQIWrQLmp2gMl18LJRdNIxFb9Mjk+tdefdTkRllYY4ZcXq+7fnqyYc7+ZI+Q4o01A8LBxPSd6onENT8taYz3FsNT1nfyKWOKsBMfA3hEQrRDjRU0PgGAnx9l0DiA8s/ZTnh2FHuH7TaPZaYuFEhcXwXZy8VpE0kiNW8rMi4aVhRbTZub50mSItJCg8AvLKjv3EwSdsTq3y6BrdleAXb1KkagXJAhpfGnuDFCqkKch5mYfVOSJaUcIZnHGHtmks+W843TfOXZiTTIv/cjDJE7oZju4tTKkblHkjpsuYbgKqf19FyJ9QyhVu15yw1pLImIskBvS/9rmo9uXNylfevhaqs6Ao4J1zWgzwleLzAB9JKm1ZbNO2+anMdxJiOAT1q17rzd/nlIE0luNuQHyzrT5LfMi3DobjqSfyLxmAyhS9LpEKsnPmpIFADf8Jtl7KQOV8w+cyiriiecH0frmNOd7jm5pz1Vm89fUuLg6htz2L4LG924Mq6JS8doI0LEdFUgHruyGgOe2oAfadPySE+6CDJfZwxW6c2Bch4+U9N8lqhQbe7NwS8D7auzmE4Qf65TqtRx3+iubN6qnnW2zk63AeENi5VZT41Wmxt+9a/na6BuoHN5D+KXgRwSNXZFphVtaBO+13XAC2+HiFx68WgigBEsKTUugbqrKw0xzolKT4jriCl6BrQAoAdMXYdHn4cAgoukJEZ1dnpIBL2Hgovw+HkO9OCMl0w+lLmLrigIn7C8Rz6KMLvni3AFZ1tW9iSDdGD7hOwMYedkpCRgX2L2RiALoUxBM7f2JppRC4VpVAxXmm9BQOrQl+U+6wRnk7eDS1Hr7iKa25eKHnkoDaSYMojXzQK+bTbgSZ5MCiS1U4Uzo8TjwFQ1ILAWwaZEK8yrB97j84eX3e82tCZfktiR6YdQCZa3YSpI0w6LiUVPlg7feMyZK+/p8xAucqlLsUtvlD/+Cjw0QeCq0m4kc8FXrpU+0zOaC8FI0bywvo+CoDuaQf1bymf+DNjwhqxO/1B9+JxxZkaiR+ONXEtpYhDBuo5mopYvbEMAArizMlWHhNPdj9WJcW+RzlTL6dCe7T9HdfWQ5v4mLMA2wEAPkH11FrhyZEfF4EvsFPpsRwt+hl5vjH5ofFdBBHvpEluUlEmofK+wiqDYHts/PP68vUsv+/9sm02WiEUT7kzCpxPxp7J0OxT+YTzVcvZUzjYtCrbiHzjF6OBqFEuh1DTAvzibp7vMp50LequshSzIx+wejJq06EdbR88uZtB7p0YFb+yDtJ1erXPv/GJ/oAsLwiJNIq49DxWlrhh6khpcFHSJSIaSdb8kpMxFKdWFRJpNB3kF/vY8BfuIlGR/taCNYqEjpZ5LNObi0KFzsHJr6vDgbfg+x08SAtrEOEQeIC9mvY/tIXliCciPJA37rWVC8m+97LZ8XJCTavxwyUM5QVQPBAI+tyOqxbeQlYZfU/yZTPm7nbpE7go8YgjoYrJRvi+MGMkNm5hWqdKgjL4GXx83E1LLLjYcVm8F90IMN1+ow4a7yJkqHn4WVTr0oH6SXAW80VHxAo4GIyAdvcVfCWS1lJgmp8rPkWFYwtr3FIjsUejkK6gkdRcX96nfDkXhjsnD3id9Aoad40o09xXe4IIU3Ls0k8Yaho7rHSLbVIeL8hsZPerifwXZh823xNCDw4XtqSP/FXatke477O7YKhhgKiYrYVfASujuWvcFMc8f55qogdmiHIHuRJsqCsUCvLHt5IXS5HTfajSL1D5J3toFd826pF7lcz3gd1DjD9OlaFXS7bHYIuYbuRTEx8t5JKNbM5E5NGrf6GweHkT4yL4qobYZTaJ3xCixexctNic4Utz2Z1bFetnDbztuqkX+ofk1dgAenQc8fURvjTtNY2hLOGb6mPfzv1HCH77+zkbsAunwD6MxMSEG1BKaI2B9gna4SUbzVNtSR2pGmrSERfTqMO3eB/u6j5YvxDerVHsxec+ataARLV3t2LRFlWC/ktAddHJ/y+EU90GQpTcEhXaGq3RFJtM4aoCLBoYUVVitB/P9zQDLWJEPPATV6BYoj8GxyAbl3ouVJXg5n8migvAav6Na2PbYsz4lYPRl9XeOc9Azt47J+FMRRcRltRKNVAFcl3mX+O8gGjQJ73AV0jY5OB7rEkJjLX0sV7sAkqQjLgYfoBZ4DEqL+B4XTtwqjoQZFPOWvFo/p+8oM4WDUS11bQaiZsHUfyyfAjzqeXP/bngV5jrFLqAzt8W9ytILRaigiya2JkNTXo4kD+pkKJvCXOOm2yHBYfqYcnBOGHfe7Wyw8PHTXTTpHvJ5kZKtWVI5CODhw7W3XhRShKFSnYTLMCPdSUbHaQr4+YQB7pYro8YelGNyAcGCb2fOBPHwPAojCj10d3Z8ZHaqgt8rf8rxWZeNE+L8HMwVrGDzmSuIJ3v1C780YT4+WJ5QR8qNHmXM/1IfCcT0Cu0mtBFcwF0sJjgUFpev0VUW/r9CMvhq2fWfMtCddsV6LgPNGTSgIaOUOk/lptUWcr7Z+sis/m3D1/dCugp6V34U5evBAkz/XUiIoLv3Too7OWZ0mjCbLzvLueg18JRV8qStC8tcJwiVzatvDncJ+DTdFej751/2sBhrI6Z3jeNOj+VrKoQzNZu3eZnVlNzxpC8vHvou0e2jasnMi5PVYUTUTr5IV+jaPfCd623qGCBHYLcVfNwJLEVspccj2dDKxcOFx9xkCkebEyodg7gKKs1UYcmMq9sDKngrGpULnTO3zquXTSNIwTQiVhgO+82T5KZI0qZUnoZ4hNSFH3HOs2usMl3pR/mT35B34a2BSQmXX2Hb6etoq5Hm/mhuuU+3Q4p/flgKl9ZmRLmE0LPYNHjjkzBHeS/kCDJjNB1qIY2mZM7K8rEvV5BmffgCNUpsRQPGqBeHVlzB1157BEI5UHwU5mOkcDI33zAX0R6nt7mIf533Mv6vJoe/l7Zu6pj52v9LyKVbh+emPb0FZi2JmT5G55W0I3EW3ot2W1O+AoIgXEAi+ZBfeCaf2sJrgm5xnyefXBN4C+1/74DiHg+btHsM/E1GTlhmDQjXGQTcaah/t+SwNx1oASycZz1zr/0U5sARYlYceg/I78UWndBCzLvxvvqzRK4YKbbg4gEcW08hGrInrTl9H6LdqAgzswoBY5KM3F8rAgjSAUNzmLKC2X58uHxweJKB3ccXQMZuzucmkI30hbzLVqfQQ9Nggq89T5VMSY1CCa2pJ9zTrB9j0Lrh9b4K3ey2/ioCULMlJcCacGLNwO1wQQUaowSiFi0xvrHcqSntV5gidPJ/RAQyr9y4ywL0SesClsZ36pQbLAabndPssplwqo1locv03bOX+i+11f6N0T+Z5sZfFmigwmvbFsfR4Ah1uGit6fpUMXXDQ3QctTC3TIOdiwlMCFsuKNvfzqlF5BQTbwkqgufRPU/t1B7XePgBVr9diaUyN+Wq5MXXYNldQfCaWhIOJnHParsVBvEIdr4pvt1tEBlHG2x1pyR1bsA0l7E1Hm0qPIGRffl4GXZvjFzPqQgbyUAH5jo66kk8upGdrNQ8lPhd4by3+AiUiEg+5c27s34/068wiG7kcjXy41AhU5H6PtRzkGdLWSlKYruMeQ37SjGs9guhueOZBD+IJg7hdktlWabjA8HykV88gHV2sCCOKCy9TnZ89g9ysShw7lw8BtIcZueHUDyaU0iitb2+vwwcSuKCnD2Zx/cy1RiFCFpdGvvkcJjAM6p5NpjdUR/e1jS841OV/chNWk18F7WhEtM3WXaioRxF3iELhNMPmy/Hx+Gg/qeY251faDgH9j63qcxUJQSNPyckcWsEGXqn7PbDhtZvAEcMk74TzzmCDSe5ZnQtumvn9x/OAEw9T5DETsWPRHRO7iKU7Vd39u+jPTAj9TxS6+xYrMh5k5J0bH/fSZCZV7bgkZLggNbbZ950RoLB++Vsbs+2kUuMge743sTeC6wr1EGACYDet8O1Pe9bSw27gXqBSoK4oA832dfWxr8w4qOKQQeeuTTyXe6rlzC5+Hu0yZzmYyPR2Czv5RrYwm66utglYCcjrx3J89Isjx7YmW1GUtf4Il1pW9upN99ITmun2jvYlXeIKFM8Nt3N5sB603EGbTs8LW22vsNoM4ivhGqlhz64qPTrIjiO7UEPrFM7Dx1eqGKyEgJFh1XdD5MwJ82eOXRO2JcscsrlAu4pPIfYf2bohIznPnj3+Ls0mwA/TKeILAUx7b9nDfqEp7SQmJcqVO+P3/0mNpyrAymUPu4jWIq2wqNkaLP6NYsEeVxJfZiuR9YwCxFkl4gVRBAjw+X7iAggusfKRqIPgChOPoQjPSj1FgapHeEBSL7X/Xbwk29wv6UA/hoDan3nu+FUxnpJLJTnNhs85+87aZSaFaK2wKqKIfbQA9yVKyrXeelanu1qnQ8v3b7UmCzudO3jNp1SOzk5GYg4vRpxeP/nE4brCntweQ7/LoDSVOS9sFA+luIttKN+VeOFbHx5IkCr/DsDFi9SIW096M/Oo4AeKBHweXMfH5RvEmfTkp5zTuqJcy5hWPZjITfnWRyU5ci4t5uRooILaXKMcO6S+fWUaa/TAv+e/sLEWukwM6cE3GtAE3ryIDNzfhBr/9SAUjgs6J1Sm1xDEd3jSOhBrJq4a4k5+V/wn0/EZVB+jwvBaqbs3dUPyZAUPCz2uTX7lU9wKpyKjBgN6kR8auLML0Bi7TDDco0PpLKapPQ1d/Wfh5dtfPDo9/7o0eaBbW7PfejHiN49AJAE38otRUeH44nD4kE23m5PDs/HltTpGNbOSE8HcBiRtOOdhWWul48AmL1yVmULjHUt1Qt3gCL93+fE9xsfaIRAgKoeWv5j2ZXRhK/FLb72ZQ5XWsf0+rxyu8tDq6GfPaYMPxEKL8WdWBDjgCjjlUrxbnHKOEe/iL8RVPT4P/AFc1bnVwe8IuuaV7yFg/jTRFNjhF6CHudEoHPI8PbAB/JjugVPtIErpCCfFlMjqo+dshevsRi95GhBc5pOkk2B1WrNfdnDZ76TtMvdHqg1g+JkttYWZRogSbs14iJLg07YgpMDlm4FdApY6J6q7y9nr+l5lHV1vp8s0mWmhyTI62kGVTgE9dAkrRUyu5n/XIyZmcflPWKI2APKNk9wuvCMPJ/s4834dbp/6hqtESoNKSPH/4wU1XxTyC7Vxb7T1vXPyBuFapBqg3mEO49jJ47bE2myIsxDVLhbztu1pOZR6O8ikEXKee6ibEnY+VAOoTMl+tcelfy3bejEVW1v+APS61faFe32qOFQj/+wi7G+Yq2tVbiZT4KNh5mlvDQDWlxKmm5kJE+iCHbEzJvYBCG14+m5hnr+9KQM6UWgM6LbdG3hN8/PHVUeIsN2zFd4DE4yLornyQmjm6nFkqU0qTiDYrXWhZGwzM3Sz3ZJ/Y2UHzq/FrIeZPs6R277ILb+D/WTjfvgf9C7NjRoBvsbXzW4BnzzDL8nV+zqTKHxHTge7bMFFamrMLZ4DkS2oaNXfgk9wGzPFp8tmeS6EPIxOktf1Ul7Amkf2/qVETyaKHV/N9nU4UvczVUzM9bWaT+a07BZ+mS9VfakNWEvKJUrUYteQkjXYEuxOEYPX5tMoqLcgiq8yK7py8NTY3EC2fJcGUxMYVJLq1xPcqnHhL3yUNDVSe2PZLLHAVv2H0M5cf71BbMH/KMK7skx6M9yEvo8DDu0WJi5Kef2Vce394cwTsMXQrC3C+UIUs8pFuZq0eO5ZEo6KicRnTWRL9+Ln4kZoYxBBlokOICOEuSQsAnIJt48cvQXutBLmL37t1yl00Z/KjHF6F7GeD5ZUxsY6Mcvl6g0J1WpR07Kx7rkzSckxyIY/21XATO+J1sxqs0GvNnrmovk59ejDQVi+LhXZfXoA/oF02NqnEHPqTA1zisCzGufMF1La430GYl+LC6O4tGXRQQ0z9tQUvnlckuUyFi63yQnTCpVTO6pLjz7OQgj5Lp5VKuDlcnpucDH7ArME0qsqqz/RrLjLT/C10DQqRcG+pEET8FW0t1V+x3ykvkX7d9GcXPLTWdVtsqBEA3csQq3Wl3GGu67kJxJgPfw3r7pnJzNoO5lgIk+hXSBtFn17YMDWY4W8JrcnagUnIAt9hJWOlYLf8os4omOsCdTdMolvfrskZqmoRtGfybYi9zW2kswu8NrZi/Fk5++JMJQjEkiuywK8EQA7rrLir32dujNQZF0ZTqScDV/fCewQGYWknU46eQevBdBdeSYTjRBLVbY9o3sDg4ltxa7ufDxR3A9gER8HtweQ7IzT6HUs7YPNWWt3E5BvZXOXXOQEP8cvsGgxBP0gj1WM3/P37ZyDuvvHFbZHvETw7QosgBBoC0moT7j+WkZJUMF97B0ZwG/ambgOcU6YeWrhincHEK90rdZuzacbxIzpLj9uEYu3nQs1Kvx+om1Uw/Ltgw0yZbYBGMm8llzpyxAA4kyeKZNRo8L1pGkTG+Aru362jGFbYprGUW87+raFfNdXhqV8+0YmWnvh71K4lX+Z6QHQH0jHKBE2TJNOqHt+x7VD2GAanG+sdyX4rqm5wsDO3PNoxvVFZRUBM2HvsG7HnoGjUWHr2Wq5MCz7MP+jeBmZMoF62bUhWvHfQpWNpGCmgW+Dvewb1XoQffK14qSJG3kXkTfSreHqkdlDsSRp5YJfxvMnGMXF004oCVBrSYno3A5fUe1Ly+yPy/nweVFsGSQqy2tF6D/sj0v+SLcRC8Ty7z7RgS5k36wAFGvfkldt/2L6xX5ATQ4VLrfE/rGVdaN1oU30xMgMYlHz6r9dM1PIWTHegbbZLMUJlIRBBy0wTlFlenmK/8HdiBTkGGsY1e14JP7nVsDNBPHHxrlBsTaZDO9woNadAjEtzhQGctt6ed4r4Y73z+MUDLey7fZpQe3rlmxrdgE8xXj5+CNRbbJz41XnlaOtr6h/DKRhgTyMlH92Xi1jJpxDwSND5uzp14yrn90DaKuFUqA5k08Qc8cYnLnI+cKDnnWXNERFOU0Q928Zo8BjFsNY1oWbDFG2coZ7rBWZt/2IIkfcNbIcqp/xeUKRBHnymxzRYEz6WvcGflHliond0bwnrEeu3nuPZrcO9b50KYtS9Nri9Xmsyrl5OwKTDHnzTDOzD7dtiN2UiAEKedNLUlrV3idgbx+Ek0KZ8FRheR89Khmr4H17FTSblV1HBWwUGkzXfB+Y9a8Bcppc129Gv+bn8nay//a5ITJrjrEJCAiMUgXw5AYcOl4OG9an5utwN28BSlm6trIZd9yLK0H6Qbrdkr5jVuyvvwVKGpuFKOulwoYs+iF/bNAs/koPjZOZwPcl5WoliVYCztzQ/9ud33wR+yLfuRJPMTiiXbZ3vaM+z/CyKuO2JrGAR78akhyh2Kc/cEv+2U0S82YVIRZ9zHIiZotsTA8HJqgXJRifQ0l+RmMMmiMQ06C9p6Fj/+mjeGCjcdXTsGBWDmbE3cVOw4v0I/gf1i0fa3eFbsyeMZuxJIXmRagqxRVTkHrk/9Sv+6YZK48HTsXTElWpsuVWSh19vlpvdBqAX7b66iWG8DGpFzSr4n3aB2jHfNG5J6K3FyyyUF6MycoFQqVB80rfnLQ9ygyaJkq/RN1tLT4Wuvp0dPiAfU9vXlvUv9dDhJ65ogStdD8iatVcP7MnCiviZglW176jHzbGauWjY71LEkLtHrd4fgEzDstntJ7y4H35BlI5EbhTsYFOUiazM0uvNBj5/gQcIfcdNUZhwMHHb5+FPy/IwqJRwKaW7i+qqnSv9EUJFYmzYgt2qLI32HeBIyz+RLjFdksUjf+MGHJ4+Rt8MbDW4KzGXBCP0wf+xemYhSViTtLI5wB3gz6foiGZDRobJsMl7GUzlTZgT9CbVxAfd8gselqwQeEdQzvsitcnXihnYLh4g0Ep23kYOLraTtqnAdlEvu0LMFu5+2J3XmiG1z+CQKynTPskjuKWK6ZRDAu8oSatZwjveb4kWV8D+oPS1V30Fhw//ezFItMWKlMfB2zk3Yc7cEuYIjm4dovqJ0ugDHGw/AvOVipbDqBgo819ptqwtp0KqPCd5jMFXXN4khb+6IbFSEeA2hwfGAxV3nYwQf8oucm5KvQ/DxuGCTx99RsXJgtjRv2oiVswBclMsC6tbUu5Y0i4tKGursgvcAEZkjZzGZQPpJvkEIyR+M9Cp2Vo7rXdHzkQbOuOMrwah6+/ZrZ67DqXsKuPVp5BJ8vmezbgcKw70wHA8rP/2wmNY9e0GT/BGe0mgkCx1pGJ7m1sX0H7iKm+ky+I64iHCd30iwT1hWz17ogFN/YcOwT1rONUK4y/u1c5Dg6bQAfn7L6ba7cDt771kwlrjp0xPiXICtn9dWNr9Gogf+BHd2oQ6c5U/53s30WcP2suX1d3H5p4SR5Ob9yO3bnsodGqd/yTpcIY1kxXlJH1e6t0aaX1ioSSa0UJR2FcXWyJM2erMeM1qursL/LvdW+5WWgl10KdvlG5j1D540htLaNKhzGqvaBnCcnubYsDmE6H5XetsFe281PtokmcZuMTpkIaD7mD078amN76B+/DwxlboXZIUsKld4OU6MvhuAB7aA+0s0nIoknisWPb25C4GAAWhxSBPB+cf8aOUkeIP808ryqFABTgQXuUABd6akDLAV7BOIjdpEZmBGAi/obbtZEjYXu1UQJofirOVF6obOOBAFbnkL35y+hYyfDIbYemfzm2Xh81Hz1vh/V8inTLbPg7r7TcwMtZxgEBsuqy+gXgF9rwgqQwRXZSn3D+CRvVZJgCY4VAKKmH5N0xMYWCAJAHkC3K6fa/idz8jQcejYDinxAiKXPd2aiQFc9jYXd6ssx54tUOIhqX7aTABuFsdjnC7my4OrHijU/+/mS+6DT/RCcXwsTGr8lGSGXu45X0Hdn21wASiDpx/pAsXk+/paTsHCgHo7QDbq9OHgZcVb5h4VCgS0BgbiwRErO7r/Qc3HY0iLpKA60nIN4ldOiNmabcaf6liyxfh30vXMKOhR5YkP1+IV0BXCTqS9Jtm7r3sfCAT7Ek5A7gbfwjAu82erq7A+Y7n8g7GZqDpQByzNMnBwrYCGleKgH1+6Emio8NuGPT992W9QaBNHZKyyrtSnYRoxurqUa5ypH1S5U+1y22OiU4XYeb1UmD+lgN0duyXrOE0MrDy20cbHwpB2bnrNP/YiO8DSMzA5oPatOduRgdkSGC1rGpzIfDJqe8TAMOoS41Mnnls4brpT4Nc+LqP3EGpuhC7VPiiD5OjTL4aOgLNUiEcpSz2NTQ6hNO0vcXA9XptoWmoe9xqrr4YJCxF1u1SH8DTvT+VFytJlGahlfT9cPW+V50FyV7+O781ZBXBzoZPssRx4tdSSRuVy6gP19hHqGVyXNjuf3mfTlYqv+efQsZMt/u1GtDjSYL4qZ1twiqXVVVdwZR5o4tqt1LebphlOJLGqHHBYAnfQi3EBqioC8bXss4+mH1BnnG3GnuEqzxw2JQbHAcWroAKAb4nmGMoMYX911k/PulpANo6GswmzMBVhylB2i3jhOkqBgZU+yscbggiHEH8b54MONUzcWfg6oFuEa8EAzVZmCQC721Juj6IOovrb6mxfA2pEbP5dXyM/NH5lay+y8LNy7ZG3JwrPNbakjRS1qsrcu1izR44aAEcN4OGAlwEjbXSYAI7qon2NWoQjE3hJWvAzTtFhkwQnOAkSrehvDx5UPY2vGGILzTyKsyZPIjVmmhakcyh2gQVvHsn7Jy7OWKueXVcVWX0q9Nib/vCJEGl0JIhw7MmQyckGhMPfsEz8/5BLsEOv4dW/PsE1VvIbOmYngJGeEjmHW1wuvmpo+sXPfGU00Kvkl7SyvaeUeiLQqrPa5RJ2iZ94O+hvaAleeynAuNNkuRpO7Jz1TC/FYzLtF4fZ4dxaf93jzBrviMDGU8+PieGeHyzCvCjAYP70uVbeLLy80hp64jby2ugqtqstMiVM4VpqD3iM09ixFcZNYYiRKZAtWXIpz24aAg4yM435+sVJXhylzZWt3TmtY8kDMyD19RFpIZ/z0sbh8tZ9MdkXtzVoz5mASKAuN4jKrUe5aaC56ZRO4f+qA3D3vik70F+b4+h7KmovCCqGrrChafNMVe0aFLMMRZQbD7aBSY9Rl/5VM+Da3eLS1U2cG9uEnRjMfC5Qqq80HPco9cuyM0rWPOREvbMNS40H7TCrl/SblLqTK4cizW9FSHBhX1xiqRbvQA3l0Wns9bJiYEkvNmKcRNLQ6qXFaL+xiS1hXIwIAdttR8IamBbR+mwFkzd9YUjNltifEIUg653wAf5LAsKamqOzcBEOTlZVmbOzv3yg8ERCyxk+zGOBMcCEjQwoYTaO3Z5OQ1nb+P9wFhF+VFVscyqLBbM0RzBW0Azjomt6M94YZxXa+rPZGWiyQUb2a0iYLzhlwJCJVT+6u8HzeDXfCJjJBcHiNEAnxmqnyyqFdaPM90u6FW9dzI/fazYinct7/iQnJgK5EBqw/3RKyOGQ7ONkeKJvSNYLfmTRMHVqGB5Occi6luKqXizbgUheGN87sVGUvQ4Lb4dcPJ+d4P4GO/Riy21t7aRO0cmJpu2LXWEvSvSpneWwgOXv01etEveZJiQ1I2ydXqzHhYKlTua3+Em0mEve6Svw/wuY+TA39wZKk7Dfm9NtpSbgSdu+1eedSHmbEexBx7OyXKHtV0VbHDHfleW3YHDCw7LbaAT5AW6w0dV2xoPcS0yWO8ehZEhE47t5oQ59IdJSM+XscSZfYdCYKZ5ED3hGEVykBwz7Hmc/7k8oTEIpGg2HblMj/mAOa5MLyHEN8lUwTb9GAgcquI3HKDdvzT5rLAzsEIXR8ESaTK83ha1FL4lNVFc0PpdMlKa3m4qQdNYxPASJe6IUI/WW1cnB3Ey2+1gB3vnx3DC5WPhzrn4JD1P3oqzGioxM0b9Ryl4wF/Nu61GkqTO28ifx+MsCTfHeFEI7flZAlsqY0Z6+fwLHUn6YaUiC+Y9K68YjGWGF9OibGnjuJ5j1AWTI9vtl1DEMfpoz7CBu0/cWXGjolJ4RValNEPzF1dYAXlRoUxv1Z1mEtxexi+SGiWwkk3DsILo8M21H4qzQUnh4ox/Ljc/V/Cjka6DAXkzLTJhWTbuJQJjmKN6UIwB16/D28juOgtIp6jFaDkiAg4GdOZjGIvM9nmCYxOA7m5IdNTcZRfTgyM35kjOHUlhQ8uDv4srXEol7LzMflQwm9VmhsH22YmHEj8Ye2+BnEY6WY96VG1I+xKpbL2in7TCL/Eoax0cbfS2+e4jJXPrJkTRgyTeKx9PMuVYj8moohLfMfXql2SSNbnCVuuLdq/CBXYUHcqCCn9kC+Ap6iQ/Y8RYDReWs8HnVcK/fuBnjRMUJTAuC4cGP0alPJl/E7Ot8iEoyplAtppcURvgSP3ZSZrzFaTWX6sv2J9Wr5uyf3MrxcZ1NfsSMXSJ1X2TxfbjJaLy0nhAg7okFJ1gHZi0Sdk69Xa3u+b4EMxjCVG0DdH1e4lUHSCvFuFqJ9IeFm1HDxsaO+g7ULoBPsfl9xLlNLf4RdpJTkpw2HCRB7NqedVVcAS5FUt+ug9RfBVU63rjtYE0nOkfRKKCSgU1T8wqUGi6Nsqrer7henOnQ73KJprGoMOJt4TlP9FM7q2JAv6iSSZp55CuIEsmicNvvp1pjY5alU2B+KcM+FB1lF8q7BGtAO91Y2sa72gwMOu1LGFqXE4awJ3OKQBhaaQBFxPFLkMxHRPUrPGSv4ho8+FXpCGkkz5tD8caNZeTLjBpBgN2LW01GmgT+QXvbpgxfS+9j8MTlvSl8LZMZRbbz90LYQ1c2qhQZeZ4aFhh5yqeWkvpVpzeO1EcWBtNgtLaFPKT6nhossKX3Vhe39G4y4Wb04wGiyhlDGXz+prAgkTeNDBFrqFiWNI+rQFvDKkOx+Ej5mJfPMYy54OjuFYDm+QFEFu5GSVetwRj+WlCoVDzI2yCE9cQZBXAY3D3RgBpyhtwkDFerKSWznaqwYNJKGTnI32PsQFChVdrgpj3qv6bHFwYjMrx96493+zRIo4jZ1mZaIvqccouwwD6L7fU1vz8OWlu/QTQYm1pRhv40sSwu4SasyJfPLX4wXUm325ZKjKPapLu9sz+uxxe3O8/S06WHhIPF4hLgQhobTvPXzGXf0eh+AVYaw+QvaIGVA9jG/Ahp/3C8OV2fTLaquGsZhi6pfQ0HrVhLQW/AMeafJJmQEIKHidLXrhKW0wXyBH/AVg175jgY6lrQXNjwPaBn5D2mXkxB9zywnqjPuIFOOQKOK/YGMLQ2L+4nlO2TM9zUPrIyTHf2+/6qmbCbuhGVNKER3otzK5+Mg52FkQGQ05KuUQy8MoTUBlDonz1BRfSvxGQcxz8ppcieQMYyh+X0NU2UFRIDOVCXcdCR4hcinrcskqmquXrQjEN7lz9Id4L/dR8nyW82nKBz/Rr6srzcwzRkwRniD3kr6CMdBdxucbrd+J7XMIUJac9fmOkei83fBnU3ggyjGqrUpkH7Qjp+jEMJ14eUdw0ywkWAmzligCcGVJ7jF9qkrHEOC6yv/uH8xaW+4UcRmwzcvUEJ8Q929GMnQUiXy9CuQc5sL9vBzC/TyfqUSO74gX60NBnhdvR9hfi+iHixVc5AaM9PdUmtARDI9mDlfc9rSD6JGuNmFO0VJBwvv4cBXW2eu+ZW4Zj/FmxRC8IeXKx2Fp9ZMLn6WaFkOvMhvBwLlN4W+kTpqcYVsmwx/3Psn+dFed91KNOuE+MEBVx3zFB4IsUfniDUKBVTSEhZs/GFiDuqaZ3hvNGH8VHJ059G45Q6/8ppNt4VscD6yMy0WGP9LwOy/9KiuP7XgmFhKGWMgssa8GLJIpgnfKieHcM9uSQayH1GUbZH5HKL6Ahp78Ol9+a4P0B3GarInXlz2vgzs7VzIypaoQS6rHZgF2O0bgFaQkMe6140oOuYcx/Hoj6ZDd1qB0CN4umF/pBPbvISrJkixdu0hRa4ATpLrw7KmI+QcL9iDJ0nFdUrXj4nMaW2Mx361edlgsAroeVrE07MCPU1FvW1/zKpYk0TQVY/B0x1D97BxTaHeIAybm0el23O5j4zCO7+Fjp1uyFjpL9CSmiwHwHA2zLHUaGSmif+EXvI6JTihUImF7FrdPWslQvI+6Vtzoff1hpdBNJaHtHXuBjD2nKU6Tl3BIW/aVSI05gs7/T1DVDrE2TFIGTbpONfO3X0ADMF9Zk4fEskp+wuZwhPurJP2/2ZfyxWMu4fDo2+GjAwBKekxrXdXMDE53uw5S33KIGvLGwEMrKOcfqjiC0hV/hClyeEe5s1tlgV9FzIzD7l++LKm+Q5Wz/a7YJg9lLCmzI5xGewqzNtUJEAvqCsOsliQmHn7x2t6DSoDAPznI9ynrXPfijlNWBiqd0F+1T0F2IUfwl1G8QYuCcAs3ua4VE4VKcByHcq6R4SCg/Y959BENSSYU0n4EfssipNKJfcPsvhfbgKRNmpszEVXAiRmFTdhWC8NPHq+ZV1+zrBs+/8lQBWRq2SjByXF8HTKNyb51QxGbBtyIiBIPOV++ZE8LBa+eOVTTM3YNRAQ3xi8M0HlMVIqZy+ASe03kp6+IOV0SCAjEjKqSY+NF0cix6HY/jAFHhCdx/yTDv7K5gQTNA1TH9zUp2YCWeYdWA+hfTg3T+IzNx+zlid62oQw8TtODsgSkeFyrSSPn02WFcuqgiDHVsoYBJDwbN0qnwyCCXdvkoYNiOIQw9dSkpFTCMnifv4SS0KdusD7NjeZ/+sAZdHFriP2/ch09KvU1QKJz4WWLdAlWTZL9HyqA3rx5hTpUQy4rx1wVS5c23Hfey6HWkmYqiIe7YAJz6KMzgfT0kgHVYHGU4E8w2VW9JnNazLtUb2wc/l7WdDcKCseWzcVP6HSXa5uVmIYKyLUg2lO/QtdCnzaLy0MwiqbXrFbe5bxlWg6SPB6jZW/Q6dWbbDiM/krVRFkaOMFYcpaQxDpghO0YNqpww006UL3gtuAn4Nx4tloYs7OZOozJOoa31SHNh5WYYsX1k3EvqdVZubEhqIJmAabtUju+UNkgPS9lc2ByAAg934DmDx1U5N6yYTulFcxQW8gH7opTR9oKBejbc2OYRY0urRF9FLhdxR6ta16q8lsT44vE6cXcWEo0w5VArxjGyd/GZ/mg4Y6dHIr2UO4ZzfC/5tuwU79kLxKYzMDjVg9woyC7ThEKvjmA1ap/hgMpTXompYtKArwjGCTcGD+Ot066U6UC0zyhwfqRmGnPE+SZNleDix2AfQhZDE2LPhx38OwxcTPHie5JihvSKdEv5T1ZfWyYqFRxNR0fEG+kdF5DiwIlRPxtmpmQovbfGyb2NguwnUjVwm2fYVoO91wMtWGmklK2YSRPkWqRnjLsn2rYeDGCqx42ToqY5/ZXwlwSE9+bPNmsbdc980y2bKssdgZXlkAKYbhBkefp4jWCZxoNS5+kOzgn2T27wTSut2ax5LUZE/VnV2XX6+XSRWwFVDlmIR9CrZ4ldpFkn5c7HMvnORmm/8GHARiFZllPWVulBjSjuyb+2VvNBrmcwisZ9cGZsU4e0fw5rTl7Uq87qZ+FwLyPPpp1LALard9vPPee432EjovmK24LpUJiysSbt38zRIid3zB+3xJbunyhLQSoIXNEqz6zlO2MiUAjv2eLTDRG3e/vwihY+7xsAcUgpEW88/JsZQxCPk9dk+kIOULTRJAD6Ue9ey03K8xDNgwZcnyQ3TBraAmdhsbYMko4Tm7qGppqKr7hQ4J0o0yiD0WIa22yi+4LtX+c1ZM0CME8fi6/+ShAv1gOqTXJweu33GOpwmmxVxkdkjMBPr92ChOLyzsKCBLymnN+mCyeOx+8zrGnY51UocZuiW0MCF+6GS4wVvgLgZROWEqXx7LY6upUxH0mAv+ZY9qTNojkDuM5PFsYooWFWxCYAmzp/BiHAaa0lRhRJeTg7Dh80vr8jwWXXl7NbfiXDnhchJA4c6bVHiCEFrdKkyGvqCQgKOjA1U07f2ap9RCtZTv7v8JmyXtmOR6Ps+ZELzwmzdtSMuom1XjclLsl6pYwgkkQNJ+zUc7vztsMcswT89QdnUGyUES2/lR/D5mzo0c/7jS1GqA8eC0INBv6D3z7BBmMLEIF6z6IoK3CtmRbtkhcufbHT76ppvaMTvUwkdAw9IAaqpg6PL6XfCj0SIVE3WhXwgvGBFCNlqqyoUERvDHFC/kBPGN9SYFyYLRzLMhoiBdJqz49pGEesPC0803jZj4ubE1X52m7FL0e5OAIF9162w1+X9IqvARM8HXsHT3VnX6BcmdkS+l+0Af9SF9gyO85Tp6qFZhC0p9qc05ylrfxbFLrbc6gS9A6J/7iJRGMX5M4UmW5eQGMsFF7fih/13QCJobQMnGCr/03SHalayl1nB1tIhiLaxBixu0AhQyxfgOPDffERq02B1yqJjZnwASEnRWjaLFrgJTVV6QWZ2FEDaTmqPziay/vPIbCCq/z43177NbEwtwfvHYbPlYjhul8jrQOhTDYw0HeryKhbZpw3l5cF5GpJBTgW3ZzVaEKisXqNPagje55Hh/WGnwEuQ1dA2WQaHO78h3/X3spQQsEj5rJHsPpyJEV767G1uaiXUqQ2aPIRNT+262g5ZcQrx/F6LhpyC5OdbDiRaODELHWUQfodK0vUNKt5Syf++lEHcPKMbMd9leX/vkCx7EXV1leYHh1qCqCv0McbpOKLgM5C4M5r+cOZ8RWxsjFdBD297F4gUTNHGArsnHq7lGWZEGQ5UoTP2GX6t4fXl4qNrUL7BHA6a0BqHgE/Pmsaaypj68ZWXvJqkQBaraZJb2zN1Wl5UbkXUEK3INbfmQ9GRgEOYBI6jHD8xFr1Ch+tn9EMQ5x2CxwBTZxpzUCLmquHpHvQvmtNtOR6zla6mkXJ4UWOL4PWN361w//2Jkv2lc0vIivxnexXxoyDnqSe2kGKIuO+qLJkE3Pb00qUfKWBzYkNOetWsOw3mOZHbLFdK2QzzQMpe7A6lXC5TpiPeP6vyNT4zK/a3yW8Hin+Xv8pRdMr6tR9+MyNnrm3ykyIp9X6TaXM50gfPL1javEvtHkMSK+dv4UQKuaO8AtzFPWOw0VzgbxHhns86ZQ2ZFMIso+uf5BjnVI7KaAUPZvzR7Imv2zXQYJB2fj0boHNQJGeDt5mHyPLTO61oj+QP2abmAegNaNKshiZWGCb2NCw9gEnbS6GoBmPD5AJGA7ok5fw6/GWGpPztHk9lqM1XCeZ7HD6g3DPfqHUG1KWt4PHg2sMzv1u1tUzdROS986x80QTtI9UFzTQBvstZRsOWNRBZTT79parbfFxWP0ZSdNMvy6Y7fKFsOWag49PJbgFCsEks1kQfZkYgQ8KrgpqD2akc+eIVmJ/0tKCSt2Jq8lt8Ifsv0K74BjsoK7X4elBPYAPdUZljycH61LbzC0rvkF5MbxYgkbxXsFtR8nFrAm0bdFgdXRdrhXK/v+q8GCJ8LAWF3L6q8GramI8c04kgcTj3SzLkGEHpjbimWFA+EP5ClvrNzFj1DXXkqmtbDcnzFzqKqtTzO57W6/AshE9VikQoB4YFkZCanHP+dZTswRrLxA+nAgdR+6AF1Jw4doM23ZOsfmcqZ29T9O+16kMqPI8iUdqH7JBBvGObdo7H1AMIY3gFsHqbNPdgdUVenH1jkcn6Y2+Kq2HBG5qM1DZAerOvphcvrv4Mc/HZxLZfRuH5VEYMzesFU4V3xc7tQpKUVzV/HlQ6XvXSY+zGKj5l6Iuo158mMPgCWnOyKtStwZPYuTGAQm9oLEmshPi98JEMyOPNxV2zW5c6no3ZyWGNpatAYL9lUP1x5wjKamLG4a78RHIS/61jajWvDCrHnHbEDKG0aqahx5Z7BnRueLjmg1vC7+zRM1IDttkz7nGN1Y6jKumoU0P+sRGhUd1WdwmxFBgoBETli+FjEcZvWCfMw5GtXOAuvPK8OMmMM47cf6l61pPB5skZJIFmtYQ+gCzJgWAe/0lirIGDJP/FF+d0fdXYDCWzGhWnZOBt0W2dUwQPsMlOrpqrh7PUOVJit6v3+1aGpkYZ6l70qpsgyiUPLe3KidJ7JJTQLSqhn5y8YfoaA3/KHwhR17SBYWIPNyoShiMQ9raCvspJngAUYEviyUkN00SDRz20XmO9WDk7CELVDeVNk3+Gbaj7ljkTe2J+/d5T1pvr5TT7uqZwPPG0/ilu3fyCNRcANl+UnRqtTN8NaIbulS4Kyi4BOBApv4gXsd4eQE7JP3urDxJnTsWGeL4TVuTPZofM6VWz3A2iOf7jQOOiADnHn8BOCUsLVOsNnUdMiCMRCNxXUYho8ynqaXRxj5KVI/fqnDb+0vGUlz77PNhrl/MP6Un2jnz8zIJ7ybmyccuD07dEI88adH+73vUMo8p1sr7Yr5JpW8bhdq75hn+h1pVnR+UIgu/ylOIK9LkopmsBuQ5eGELioNjQj91k1FwAV+dS5Yo5C+I56RS5gaEojBT9q3A0AZQaxH7CL1KCRz1na4xZ2W3JAMTavJ238PEcWIBaquJ0q7xI4LpmKeSh1WgWtvunqJvLkUv4Kcskm3kBFUCAyyJ6FlvdrFFaiDcOeFXYy5tqM8WrDuew6tD085eOLHm9c9DcA+15opfQxqSzHPfbF6PjYd1jI5nnkHWEvxxqwjh6TbZHfM4KuuIxJM2YClBQO7VOi/wxMwGhXpouvQsnxZr3ICxfXQYoqgRg1wQGO6dSd0FszYKA5+QWoL5NgZK1n9U9PPl/D6BknOEXXxlCZUkHn3iC4NMeTJ/64ekByYDNlq0zlxRQWnOlQlYbwLhsLELiUAI0Az4eWJ/czkQ9IrcnL5d+cb5K8ygsVijxzlUlK1kAiYWobQCMEdg7KfPpCVH2nxDQ+1yYHMXmZF0und5v2+hyie1o6I/i7bNSFKyoXX+8i9uP5Z4oRlf1p2JUHp/k9nIyvjpnwONseUOKBI8iQm8PsPiYUeKrYFWlQpOJK/mjrX5H1Kb1+Oee66gNyo+5oXNreCExiJbJJ9rkjQhwTezH5Bq6L7kkD4V1cKptXFRYkFko5KI7VJJYKRy/vMRtmgMhrddIqqhgC6X5PSk4yzNBHu6N5cz+EFPDysxo1InEoy2QHrlGDUP0wFHLB/QMrYyVY2R8W6VAhnju+SczSaoee/ZksQOo6HuU/cgb06YNqKYrLGivg8JsIxOi9+Ix/O48sA+p+tBEayYwatyHFaECok6BJI+FCWcGAPNcR7+jNIjNc3MdEHBG+htxCKCp2fcqO6poJI3PJu2wtES6JOsX6co4uNcPs1XMaxWIB6LumdbT0RHGtDyS+yWivva+knWxzwnzf4vs3MTrZqfUr+ZNcTXFlqLrJarogzwyD5k+0HjQ5VRk2wzDzWVmZHomQKMsX3ivv7R3rhnpQNu9jDFt/WLuHoz7/Wm6MaM7Nbr1qs8PdY9rw2Fq0Zz14UTReXzwuVa3cFpX6skIRwq3vvgYXVfrz+ASBpMDM4xUm8PSFSThg8CTBRt7ORnHlsSB3+et9v9KefxPRrrqFLTVQtb7Y4GqW095uq3ZEzPhtaDYutG/KzW1HNRcb+a2XDAQpw+9anIgMCWF+kPqRv61scfutZBDT6uUMQbc00dKmBcmefcvDqppNnXZjqdyNhB3ZfZZ4OIgYfBJHRC6BXZOEr/4umv/JQagmzndl21AQ/MYW2Zv2X2oJy0Z8gqXdRhz+IrJsOD4Rb7gpR4d1QwN90eKZLdX5ZS7G7EThdr12EgQedW6gDB6b0aHScin4lAsF6M+RCr5eALzffkrlb6/SmTQRtHIsuGYdFGh6uS1DBpnVg91BxxJFa15eAPcZLOxGAsbycwy07tz2xu4nk64l1RA3uWKjOwCiYcEww8sXlX8nZg43Ct4KipmHfHxLOsDQ6mzBOMbdxr+trMMNDcv8xQRlQW93FxYCMU1MDdBSh02hNsn+rYhpjTOEf2Vt5UeM1j/8dIPcIeeFp7J4CB015uK3m71RjtnHoNxyjdBi2MTN2hLIItnUapiWAfm44pBqvRBWhwiOgYtGPjWEa3HEKykLky0ufSp7dIawDHDmhkDUGFB+eRQPtrnVxbDg3qppuBpy1vrqtyvWdCrsVdtYirVV/zMlljGVDYuBT0+UOdmAJ28lZ/mvlaC+NcYjppaFu4UZVGDbrbz/XvBxg43wcnrv909PMGwkIE1oPAjg3hQj/doOgWO2zxl5GwbQfZn9LQy+yCDfLORtoPmMDlKbZQplXO85Kzg/yPAjP5Mk2FjW2T9RsSv6/b2ZnYrTNEcbp4XE4EjxvkzkiQnB9TDVERF27uPXDe2TMV4XmQitSH1ZrFVxmYTsxnCCZaDajOibBT9DxW6Py0KSORG4RseMLJrQ0iAO/i23DT0ObIjgqmuZt02X4HeXZl1YWdcLvrpl0ZbVUQECywFJLcZgKOulQG0i905zzraBZ3ejbjlxBQOrHEWm3aN0n+EctH8PVvJPBNjnyRflyqr+bWshR4zTFQpNfuYid9W1+MlxB+5rLXGTquh5IfimokDfInsmZup5uhJ8QU5dqmYpqSs9hiNgAs3tpZDEtfqjgHMdG0BXoktJw+Kr0obGr62l5N4+oYKC1qsf9+s/iIbkJsUoZXCuIXT7GZdMsftQlsiVjGDWe9VvZ5PfOtcrFpBd6OTXOQTckJsepOkvhVgadB/c1rjdjr2yvS2MK6czAC31axEyxAW7FxN48WbJAzr2c9QIKUGgKzx1awgMdjSdOBv8kHZs+Mc5RZJUFu/6bS0uPsEmkNhM66eYOrq6EsWzdSgdtVWfteGyBxnOHqXKyDU9R7HT/8qpYyUjEGEpxLCkKjfixPm2OgxWbVFlEwUX2BcJUU0ywSqpNpccxVJfM0JXhP4W8vRjXF9MmWHwvmcE7fC0gkoQ3kqTry5whhIvAVZUaWilJlE8VnffRy3F7qypiNiLdmIvv7nYkfoMrBYWAu6veymoFCOxsIoHh63TjmkXKnXIv/MBpCc0+1h1sNmoAqEwMeNQzCx4U0nevHOAk4A0JbDjpTbKdYQ1OJxyiS8sn9CNOgrKk5fgiBy3xaPRwCYUiVXwnDGjauophkWD9Crb32GcNf00AFqCsngYf65mqr6IVsTXLpwNx7NHdjW4rk21x40N9l4gLexKZt641MdLt7DMirHTf06B0vYyq2u77ufpXOxkfe4mjBRHyS9zFmERI0hyjdhqEAXCAyMIhk6kwitsojSTwyau3+FDH9EakR6tUKdkVjG7boXrbZthiky++SsHDK3JfkrzRPrtyLPItqCXhDMHnZnRgjkRQJSeWBQ1G9kJp7FOmPtkl263njFme7PbWaNAUDxK3PYD9byP2J+/w+KopsykDSShc1TtxXU2wLXoOZrfI0k4ZxaSpdo3Qk+VnLqUr4q7qUvedgAmzJZNbg/Vg5fuyYD5zKhv3RETp2GSVORUpKbrYMlOca5Di1ZDHQpWjyddwjS0posWCeMhpM3xNZ6k2MPTgt0S7xiSGyVbNaiF2N5zvxGckNx4vVHS+wwSq9m/ozENAnu+LaCPqqH5FBosv8v5dAq03tV92jGwpSAYBxULVgQa14QOm2oYxaWeY82ob3Qyzj8dgWmkocn7TOPDX3pyZTlR+XPUyeDNSBj1+fSW9NbjBpoNCKNSP9vJG8EYrCISHRzQKZMhLslVxePYho2ebIbuaLOsezC1/2sMgj8rOyVd2kD3kTJe8WBefGt+zurgUWfh4kE7kg36wExSLsH+KQMW/WEoTe1/daiMYMcWO0d9Dl5lo3Si+km0ptyO8IOrsgD/JrU9M9KP8Sjr9dPOyWYvKhZsoIndUWR5z5/bYr/y+suwi8G3snBJswgCFXxAuaD+GAyR9E82Ne1RGTZlpWU7TGNjW5y0PHg43zBhspBPv3FkipYRjKkETBJJQ9WTR1wQMUgZgpeCAn+mg8Nd0ScwYJHnq8DL/OJPWyI2yGE3V0/6C3+9+FdymhWqOORD6kRfZ7g+ath0gyctp7294QplzpywBURp1hYJxiIjDI7msho6oi7brCH76YWD6MBUcbZVQImknB0cUBXlncXV1ygdVM7Sk6qj0lQ/D4qMflRuAHOpgGCwMdmQCXqh7nHNwlgCP4njwn2fkzkDI21W5WSj5N3/q9gLZdlBO0lvWz9pZSp2oyQ5Sxaz022JM2DuOMOE+yxi4cO2df+hXrxIxe5vwdy8cuJrY7PuqvRKDjEudXgZnxjx26mNbD9NkBrmSeqgNymc/PHydPrh9cJDq9TkHXL22/xGoVXzjUJ1cCIzKjsamN8A9VkQjMTq/wDn9GvKbgejmtoz/7aVOm07/N3eMddGewlJrhzZd9XO8ot0H2eWHXrwz3X7I5HUEl3GXtRL0Tm4Ovp9YJ6IeGxE/4zYMSzpJXhwqAcgsz2hWs27XBQWkl0D2MgmMwK06UQGvPDF2Iub9nKZMG9gbP1uQsNUlXQjasmUfuDVfeGasKhkO9rLuAn8WPaCVbPwvY0011oOWIGzgTg2mn7yPDzuOoh5trNufOGucT8DVt6oYbUtLCTBEf653m7yc7Lwc+dmXKxSINLk7La6iMEEEc4qZBOKoR5TSqUqmfpzqPPXMXdFPe7NmU7k2WA0eIWDCixNWaWUsEt9YT2wTjMiuoWOLuTIQoxoQeEH7YlYn2DlgNdwKQVtwGUh4L5A9g0/L5IJag0QUqbL2qlVaPU0+08ra71H6ry4On/GAkawuGYWomMJB81CV7nlcjot9yTxXwK1UqYH1OpvPIl4cnuael5jIeepbpNAttryfBlpupWdb+EhmTQAz1OgJxUQFHhnAJ+wfS8y04MFcRUSJdSY8VAAcOTpiDdSuEKoaI90NpLhFG76W2DWkrrEiCdREtvLMb2U+vH5sciU3BY8mp6yw94arMwqGU6OR+bWxg3G+HI2porUCDOj8WmEE2vgPFDG22qoX5Qw+EOdbMAYeGJNsufgELJy9Jyj7MIMWUmCf13G5SHIDWK9aNPpQQUxESIb/LhIifHQS9fvzI31Z5YWVrKJf6G5AUNDra9Kd0WmNjRG8VvSBgZvGU9ZW5qVqFj6dWucLVxmCgFzSoFJ8i45bYGq473XAl8jvIpUvxsC4V8h5he8+lDBItv931CjAr7kZb4qSUJE4hV6Lx04I+MV8I0ND2sKrnqsQ4fIjGnz2RK7buYd67NasiIcvksm0cXrrNv3iOfXivATkC5WZT47SqvAS3+hSRh7ctg0pQ4Fh8AzWx9cFhuXbFWcRVA5G3f33G1B7EORvjuROmf+Q93RlpTIQfb3SGNprQRFuMWlRRK1upJ7L01BS7r9FesKCSE1yxjAG5jjiMLi7Ger0eEDIt/ibbknNOXpOk8oCChHYUyfgiQXhZoOHlV0ppTHlGvEPcYtahBNgXKe8mo2MzQcLjzuEWnDBXGpEdcxjQxGyJtR45CI0+Z7OU5+no2PN/XHdhUXIYSfavfn51NDnGKUfA4ADaeXSVBnoBmSaQu45E28DtZy0lB44qhBakAgkq6FzxZ2ldVIStQf+LiLMhQGTQc9Yo0gO8AL3KNSNoF/zlD16w+568woiG8OazoK3sGNTyVVlss24lqq7QdCg+76QkfDG7qBM1lmLZibhQm8epPhp66v/Q9V+JtJdfVH5YDPW8VTQA/W+OdXZdxL2ilx7L7mcSzvRHnAD1gj0V9NUdSqouXosrs+ux2dihKW7AbdebWCXW4oLkzVcHz2LAJPO0T5HNaP6JbJP9Yin/UzoZlC1VL5+Ic7xrCne42OhfDzWVc5dLL7+Ung/lQWO7MrQGofrkokJ6V7PjVam0m71g01p7IXSpdN2KRXlVBMliSzzp7ft5KHwTJHHUpuKv2iGoP/9yXSP+4n25hUu6IfP4w4QB80dNPuJdwHVyEfQwId0E13Ffq1hQtGExiO+Ltm1JoIt8CuOf6642FAqOW4iXlk/XWymmGVVmwVriadsDcCmPSR01qZ/pNEH4byQE2Ne5X0IBq5Q37XqlkZ5Im/D9fIDOfwRknDSFBukfgMUa726uDAXiD/uK3S6Q5Ed5OVmhyJbmRmwSSIvCiadQosW+cOckMUzjJUnshsgBm8UBKqvtVnqpNlJ1mRxC7vouP+9JbgJx0kW8TapMkFZlhDdxjgb+21sSUiEPqLRF44ivcjz9OcgSE3SQTRXzwZsio6gAzZLXtFPafxt3i7ibGq4Z+CDr04AKK7niUMDru2Xbn76Z1TTcKe0y2DXh99zU/+rhca+c6liyDEwnGYmXEA29ojX5QYCyJHNayIOsFJ8/arffk0VzNvwcc3W4z3RjqpUVweGkGB/26K8KnEgy0QeFrM9Ud0jhADZlJ60kUTTvMtTUtDBOeszvWdcjHFeUlAqZqx7hD3w/v2B53Y15BhYd8V8zKYj0KQTpeXUt6QJDZuCqHKMpwLMu4xahM1ErAhk4r5485M3u6YNZ25k666z9icoYLv6lciHkwXqAPzczqoTRtir/ix5aHe9Dek5/Fze075PydudJ0ea4U0MqO9mz0xSrncF2gXn/mRvgrODROi0jg1Rf06dQ/6LVe5cMFbG9ZNU4fkjjYwSuY6W+El64gHjX+53Sj38vsuUNS72RhatHpB6voSY6jnQs1BwXkd4KNs+YEXvOW4fF6r59Tg73zMUP9Fc+r4zWTP62/5iB9Sc81YphT/vDrixa71xmDfU97tOo2ocJfKvu5Hvzxzj2PA4GBabB/W0hlV4XqTIUiUMHzkooF3s2vakoxA+JIWxcnRjEyDvSCbE87zHB0U4nkCEV44T2gcFRIgcoOEB5dPftxVhOExNaQptTpS0wCLNEMvjUrRKv88nintjFjq06/ba5wlbO7WXIDtn40Czjli9t2grrj4WD/kzphGQmI3PXG7XsBDaWT9BFmQg3lbDlXcG6gwK2lrbecKBO/wMlNdy4vF3X9MfM078lvYefaCbo/W1lHgKb6k+oxc1RBwYlfCxYcw/nHI8wbpnZpKg2CBESL+e5XWIPK9nE940rEi8R33D7W06ySJCiwn80nXnib9MDJxfMzmGnGC6GOxvMmBjytgtTXPN1ACCYefpGUOwkfQQtbKepdpNZE+GhhGiJYVu37hQ7fUd3Iu2K5N4zqQzGlICLDCU8i2FfkjOEfAPufLZHODmTCdTcef7bcZI2tn+a1xnvbz+jx70xlIbO+G803yk7wYSzDfy5zI3VFn6l3mP7oIfIisYvuUuJu2xQurwxT1r/8R/zUe6D9FM2R3AysPQjlAMI2KR6aLscWn/rFToMYtGnGrbzeVfYS7V7JFbBqxWi3dORCYbu+KsD6A8XkWKlXs3mVZhKxhQvtZz2++CjoXODZ1DOLoOFc4qhsWFcDcdwXObr+g7T+vR9d7tLWDku2tvSFthc3gpLgPg7joiajC2kRcZsmRXeVI4HfKTTyD9afACVXF6g1UMU0iXFFSRI0ecuTIQtfzvXioVfjkLyP4fB07W58EVzfphzhfSG8IzBclkZ2KLLJhFfDBcOB7ZkJm5k24sCUqN6Y3HQFRYIQhsMXjozRAGzUBS71Ysv3xQv+uJQXuqnuaa4QnJA2GcD0y3Py4kzwHP5Is7JEuy4GN6fek1fOWM3TyEOUpmosAjcws1zYyUnmiK4hgnGEIrCcoOI+Kh9sW1qhb3LeeJ2BSvc34GE2OqdIYwaoc/buQEgY1Cy51Hr7eL522aBADREEECI/F5t2IMqMqsh+wFKME2K4tC2UYp7/i3eEnsOvoij6lvRBpgmCXKe3ICtz2xTE6hnYemM/jwQhoFoVTDLAvbEEe+Oki8E961e5Td2BHfwEaHHj642XszDRDoY/xrcKhiFDgKl/UaBy15ca31iHsjcFn19fY+j05lXWTCFFF9bNU4Kj7dxB9p/w/6n9ZqArllQZBqI5HgdFe8bSpYzM/VU7ZzpqMiHwf3FPKXos3ft8iPN/pQuMxj6dwwLIJkNWDuJpml6dgX3T2nP4yLO/mf4Eh8pW3SZf2ylLE89ip9AZWSEPIToAWWQ60EAEEsHX26wUgxr9uO+M0QP787cePJ0SGlnZhaPiUyvo0UiaB48oxuKpFaH1IcGczQHJ81QTzweXVaB2MWhQu3NVMqGw/p3UuxMMJF+KpvRDOlR/nv6ONtR7EH9k42HXr+wQtf4Kl7jk9NePw1kp5n7Idbequi4vyOt9usf41l4bbsLvzp5MQvJurmJXEM7rXMvAuel0CXlNNTOlABTRh4XsZX+RaAhC+pnPbTjUFPiA7NU0XfWGp3A72Z39jVr3XMzyfyaIqsh/BDR0L/czWDFlHOXm0myBLcZqKimYIgbKUsi33A7+U4TDogI7IvWSmlCFB9i8w8z0qyKAPnHzTiCb4n/yheF/EI9vzfuLPLRG3rksVqDeyUWvzT//zta4wA=")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 602dd8a..fde8087 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.26 +// Hprose for HTML5 v2.0.27 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -1772,7 +1772,8 @@ hprose.global = ( ); } }, complete: { value: function(oncomplete) { - return this.then(oncomplete, oncomplete); + oncomplete = oncomplete || function(v) { return v; }; + return this.then(oncomplete, oncomplete); } }, always: { value: function(oncomplete) { this.done(oncomplete, oncomplete); diff --git a/package.json b/package.json index adcd557..f17a401 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.26", + "version": "2.0.27", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 9182954..7a99400 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.26 +// Hprose for HTML5 v2.0.27 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Future.js b/src/Future.js index b29844c..fe1ae74 100644 --- a/src/Future.js +++ b/src/Future.js @@ -687,7 +687,8 @@ ); } }, complete: { value: function(oncomplete) { - return this.then(oncomplete, oncomplete); + oncomplete = oncomplete || function(v) { return v; }; + return this.then(oncomplete, oncomplete); } }, always: { value: function(oncomplete) { this.done(oncomplete, oncomplete); From 715bdccdd3fa4132bb110897d64685f0e5e08e46 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sat, 19 Nov 2016 13:33:53 +0800 Subject: [PATCH 64/86] Improved thunk & promisify --- bower.json | 2 +- dist/hprose-html5.js | 8 ++--- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 63 ++++++++++++++++++---------------------- package.json | 2 +- src/CopyRight.js | 2 +- src/Future.js | 61 ++++++++++++++++++-------------------- 7 files changed, 65 insertions(+), 75 deletions(-) diff --git a/bower.json b/bower.json index 07fb35c..79e1ca1 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.27", + "version": "2.0.28", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 2e841d6..7994174 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.27 +// Hprose for HTML5 v2.0.28 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),v=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=v,a+=v,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&J(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return"function"==typeof e.then}function a(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return $(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function u(e){var t=new n;return t.reject(e),t}function s(e){var t=new n;return t.resolve(e),t}function c(e){try{var t=e();return s(t)}catch(e){return u(e)}}function f(e){var t=new n;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){O(e).then(function(e){i[t]=e,0===--r&&o.resolve(i)},o.reject)}),o})}function v(){return h(arguments)}function p(e){return e=o(e)?e:s(e),e.then(function(e){var t=new n;return Array.forEach(e,function(e){O(e).fill(t)}),t})}function g(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new n;return Array.forEach(e,function(e,t){O(e).then(o.resolve,function(e){i[t]=e,0===--r&&o.reject(i)})}),o})}function y(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){var n=O(e);n.whenComplete(function(){i[t]=n.inspect(),0===--r&&o.resolve(i)})}),o})}function d(e){var t=function(){return this}(),r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function b(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||m(t.prototype))}function T(e){if(b(e)||m(e))return S(e);var t=function(){return this}(),r=new n;return e.call(t,function(e,t){return arguments.length<2?e instanceof Error?r.reject(e):r.resolve(e):e?r.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void r.resolve(t))}),r}function _(e){return function(){var t=Array.slice(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function j(e){return function(){var t=Array.slice(arguments,0),r=new n;t.push(function(e,t){return arguments.length<2?e instanceof Error?r.reject(e):r.resolve(e):e?r.reject(e):(arguments.length>2&&(t=Array.slice(arguments,1)),void r.resolve(t))});try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function O(e){return e?o(e)?e:b(e)||m(e)?S(e):s(e):s(e)}function S(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){return u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?T(e.value):O(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var u=new n;return e&&"function"==typeof e.next?(t(),u):u.resolve(e)}function E(e,t){return function(){return t=t||this,h(arguments).then(function(r){var n=e.apply(t,r);return b(n)||m(n)?S.call(t,n):n})}}function B(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.forEach(t,r)})}function A(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.every(t,r)})}function k(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.some(t,r)})}function C(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.filter(t,r)})}function I(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.map(t,r)})}function x(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function R(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function P(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function M(e,t,n){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function U(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function L(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.find(t,r)})}function N(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.findIndex(t,r)})}function F(e,t,r){J(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function W(e,t,r){e?F(e,t,r):t.resolve(r)}function D(e,t,r){e?F(e,t,r):t.reject(r)}function z(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==H}}})}function q(e){n.call(this),e(this.resolve,this.reject)}var H=0,G=1,Q=2,Y="Promise"in t,J=t.setImmediate,$=t.setTimeout,K=t.clearTimeout,V=t.TimeoutError;Object.defineProperties(n,{delayed:{value:a},error:{value:u},sync:{value:c},value:{value:s},all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u},promise:{value:f},isFuture:{value:i},isPromise:{value:o},toPromise:{value:O},join:{value:v},any:{value:g},settle:{value:y},attempt:{value:d},run:{value:w},thunkify:{value:_},promisify:{value:j},co:{value:S},wrap:{value:E},forEach:{value:B},every:{value:A},some:{value:k},filter:{value:C},map:{value:I},reduce:{value:x},reduceRight:{value:R},indexOf:{value:P},lastIndexOf:{value:M},includes:{value:U},find:{value:L},findIndex:{value:N}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:H,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===H){this._state=G,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();W(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===H){this._state=Q,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();D(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===G?W(e,r,this._value):this._state===Q?D(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){J(function(){throw e})})}},inspect:{value:function(){switch(this._state){case H:return{state:"pending"};case G:return{state:"fulfilled",value:this._value};case Q:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=$(function(){r.reject(t||new V("timeout"))},e);return this.whenComplete(function(){K(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){$(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?x(this,e,t):x(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?R(this,e,t):R(this,e)}},indexOf:{value:function(e,t){return P(this,e,t)}},lastIndexOf:{value:function(e,t){return M(this,e,t)}},includes:{value:function(e,t){return U(this,e,t)}},find:{value:function(e,t){return L(this,e,t)}},findIndex:{value:function(e,t){return N(this,e,t)}}}),e.Future=n,e.thunkify=_,e.promisify=j,e.co=S,e.co.wrap=e.wrap=E,e.Completer=z,e.resolved=s,e.rejected=u,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},Y||(q.prototype=Object.create(n.prototype),q.prototype.constructor=n,Object.defineProperties(q,{all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u}}),t.Promise=q)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[v,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,v=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?v:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return v.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?v:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length), -this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function v(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function p(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?v.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):v.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?v.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),v.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),v=u.readByte();if(v===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),v=u.readByte(),v===s.TagArgument){l.reset();var p=l.readList();C(p,t),v=u.readByte()}}else v===s.TagError&&(a=new Error(l.readString()),v=u.readByte());v!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=v.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return v.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),v.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var v=null,p=null,g=e[++o].context.mode;if(g>=c.Raw&&(v=new f),l===s.TagResult){if(g===c.Serialized?v=u.readRaw():g>=c.Raw?(v.writeByte(s.TagResult),v.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),v=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)v.writeByte(s.TagArgument),v.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(v.writeByte(s.TagError),v.write(u.readRaw())):(u.reset(),p=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&v.writeByte(s.TagEnd),e[o].result=v.bytes):e[o].result=v,e[o].error=p}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return v.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return v.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=v.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function ve(){return Je}function pe(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else v.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return v.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},p)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new v,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=p,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var vt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),vt}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:ve,set:pe},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:vt},beforeFilter:{value:pt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,v=e.Future,p=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){ -throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?v(e,r):l(e,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,v="undefined"!=typeof h,p=!l&&v&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function v(e){j.resolve(e)}function p(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=v,O.onmessage=p,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function p(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);v.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:p},sendAndReceive:{value:y}})}function c(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,v=e.Client,p=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new p(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new p(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===S){if("throw"===o)throw a;return p()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function v(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),u=y.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),E}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:v(e),resultName:t,nextLoc:r},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),v=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=v,a+=v,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return"function"==typeof e.then}function a(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function u(e){var t=new n;return t.reject(e),t}function s(e){var t=new n;return t.resolve(e),t}function c(e){try{var t=e();return s(t)}catch(e){return u(e)}}function f(e){var t=new n;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){S(e).then(function(e){i[t]=e,0===--r&&o.resolve(i)},o.reject)}),o})}function v(){return h(arguments)}function p(e){return e=o(e)?e:s(e),e.then(function(e){var t=new n;return Array.forEach(e,function(e){S(e).fill(t)}),t})}function g(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new n;return Array.forEach(e,function(e,t){S(e).then(o.resolve,function(e){i[t]=e,0===--r&&o.reject(i)})}),o})}function y(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){var n=S(e);n.whenComplete(function(){i[t]=n.inspect(),0===--r&&o.resolve(i)})}),o})}function d(e){var t=function(){return this}(),r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function b(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||m(t.prototype))}function T(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?Array.slice(arguments,1):Array.slice(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function _(e){if(b(e)||m(e))return E(e);var t=function(){return this}(),r=new n;return e.call(t,T(r)),r}function j(e){return function(){var t=Array.slice(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function O(e){return function(){var t=Array.slice(arguments,0),r=new n;t.push(T(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return e?o(e)?e:b(e)||m(e)?E(e):s(e):s(e)}function E(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){return u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?_(e.value):S(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var u=new n;return e&&"function"==typeof e.next?(t(),u):u.resolve(e)}function B(e,t){return function(){return t=t||this,h(arguments).then(function(r){var n=e.apply(t,r);return b(n)||m(n)?E.call(t,n):n})}}function A(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.forEach(t,r)})}function k(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.every(t,r)})}function C(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.some(t,r)})}function I(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.map(t,r)})}function R(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function P(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function M(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function U(e,t,n){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function L(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function N(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.find(t,r)})}function F(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.findIndex(t,r)})}function W(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function D(e,t,r){e?W(e,t,r):t.resolve(r)}function z(e,t,r){e?W(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==G}}})}function H(e){n.call(this),e(this.resolve,this.reject)}var G=0,Q=1,Y=2,J="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,X=t.TimeoutError;Object.defineProperties(n,{delayed:{value:a},error:{value:u},sync:{value:c},value:{value:s},all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u},promise:{value:f},isFuture:{value:i},isPromise:{value:o},toPromise:{value:S},join:{value:v},any:{value:g},settle:{value:y},attempt:{value:d},run:{value:w},thunkify:{value:j},promisify:{value:O},co:{value:E},wrap:{value:B},forEach:{value:A},every:{value:k},some:{value:C},filter:{value:I},map:{value:x},reduce:{value:R},reduceRight:{value:P},indexOf:{value:M},lastIndexOf:{value:U},includes:{value:L},find:{value:N},findIndex:{value:F}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:G,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===G){this._state=Q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();D(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===G){this._state=Y,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Q?D(e,r,this._value):this._state===Y?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case G:return{state:"pending"};case Q:return{state:"fulfilled",value:this._value};case Y:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new X("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?R(this,e,t):R(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?P(this,e,t):P(this,e)}},indexOf:{value:function(e,t){return M(this,e,t)}},lastIndexOf:{value:function(e,t){return U(this,e,t)}},includes:{value:function(e,t){return L(this,e,t)}},find:{value:function(e,t){return N(this,e,t)}},findIndex:{value:function(e,t){return F(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=O,e.co=E,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=s,e.rejected=u,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},J||(H.prototype=Object.create(n.prototype),H.prototype.constructor=n,Object.defineProperties(H,{all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u}}),t.Promise=H)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[v,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,v=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?v:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return v.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?v:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{ +value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function v(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function p(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?v.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):v.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?v.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),v.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),v=u.readByte();if(v===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),v=u.readByte(),v===s.TagArgument){l.reset();var p=l.readList();C(p,t),v=u.readByte()}}else v===s.TagError&&(a=new Error(l.readString()),v=u.readByte());v!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=v.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return v.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),v.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var v=null,p=null,g=e[++o].context.mode;if(g>=c.Raw&&(v=new f),l===s.TagResult){if(g===c.Serialized?v=u.readRaw():g>=c.Raw?(v.writeByte(s.TagResult),v.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),v=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)v.writeByte(s.TagArgument),v.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(v.writeByte(s.TagError),v.write(u.readRaw())):(u.reset(),p=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&v.writeByte(s.TagEnd),e[o].result=v.bytes):e[o].result=v,e[o].error=p}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return v.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return v.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=v.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function ve(){return Je}function pe(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else v.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return v.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},p)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new v,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=p,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var vt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),vt}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:ve,set:pe},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:vt},beforeFilter:{value:pt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,v=e.Future,p=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f; +})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?v(e,r):l(e,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,v="undefined"!=typeof h,p=!l&&v&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function v(e){j.resolve(e)}function p(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=v,O.onmessage=p,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function p(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);v.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:p},sendAndReceive:{value:y}})}function c(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,v=e.Client,p=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new p(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new p(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===S){if("throw"===o)throw a;return p()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function v(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),u=y.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),E}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:v(e),resultName:t,nextLoc:r},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 9f0f809..e8823df 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index fde8087..af26da4 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.27 +// Hprose for HTML5 v2.0.28 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -1309,27 +1309,36 @@ hprose.global = ( return isGenerator(constructor.prototype); } + function getThunkCallback(future) { + return function(err, res) { + if (err instanceof Error) { + return future.reject(err); + } + if (arguments.length < 2) { + return future.resolve(err); + } + if (err === null || err === undefined) { + res = Array.slice(arguments, 1); + } + else { + res = Array.slice(arguments, 0); + } + if (res.length == 1) { + future.resolve(res[0]); + } + else { + future.resolve(res); + } + }; + } + function thunkToPromise(fn) { if (isGeneratorFunction(fn) || isGenerator(fn)) { return co(fn); } var thisArg = (function() { return this; })(); var future = new Future(); - fn.call(thisArg, function(err, res) { - if (arguments.length < 2) { - if (err instanceof Error) { - return future.reject(err); - } - return future.resolve(err); - } - if (err) { - return future.reject(err); - } - if (arguments.length > 2) { - res = Array.slice(arguments, 1); - } - future.resolve(res); - }); + fn.call(thisArg, getThunkCallback(future)); return future; } @@ -1359,29 +1368,15 @@ hprose.global = ( function promisify(fn) { return function() { var args = Array.slice(arguments, 0); - var results = new Future(); - args.push(function(err, res) { - if (arguments.length < 2) { - if (err instanceof Error) { - return results.reject(err); - } - return results.resolve(err); - } - if (err) { - return results.reject(err); - } - if (arguments.length > 2) { - res = Array.slice(arguments, 1); - } - results.resolve(res); - }); + var future = new Future(); + args.push(getThunkCallback(future)); try { fn.apply(this, args); } catch (err) { - results.reject(err); + future.reject(err); } - return results; + return future; }; } diff --git a/package.json b/package.json index f17a401..ea7ce9c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.27", + "version": "2.0.28", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 7a99400..7b5b395 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.27 +// Hprose for HTML5 v2.0.28 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Future.js b/src/Future.js index fe1ae74..8b5754d 100644 --- a/src/Future.js +++ b/src/Future.js @@ -224,27 +224,36 @@ return isGenerator(constructor.prototype); } + function getThunkCallback(future) { + return function(err, res) { + if (err instanceof Error) { + return future.reject(err); + } + if (arguments.length < 2) { + return future.resolve(err); + } + if (err === null || err === undefined) { + res = Array.slice(arguments, 1); + } + else { + res = Array.slice(arguments, 0); + } + if (res.length == 1) { + future.resolve(res[0]); + } + else { + future.resolve(res); + } + }; + } + function thunkToPromise(fn) { if (isGeneratorFunction(fn) || isGenerator(fn)) { return co(fn); } var thisArg = (function() { return this; })(); var future = new Future(); - fn.call(thisArg, function(err, res) { - if (arguments.length < 2) { - if (err instanceof Error) { - return future.reject(err); - } - return future.resolve(err); - } - if (err) { - return future.reject(err); - } - if (arguments.length > 2) { - res = Array.slice(arguments, 1); - } - future.resolve(res); - }); + fn.call(thisArg, getThunkCallback(future)); return future; } @@ -274,29 +283,15 @@ function promisify(fn) { return function() { var args = Array.slice(arguments, 0); - var results = new Future(); - args.push(function(err, res) { - if (arguments.length < 2) { - if (err instanceof Error) { - return results.reject(err); - } - return results.resolve(err); - } - if (err) { - return results.reject(err); - } - if (arguments.length > 2) { - res = Array.slice(arguments, 1); - } - results.resolve(res); - }); + var future = new Future(); + args.push(getThunkCallback(future)); try { fn.apply(this, args); } catch (err) { - results.reject(err); + future.reject(err); } - return results; + return future; }; } From 20a3258a8a631696239912da0f706de6eb1e7a12 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Wed, 23 Nov 2016 16:56:00 +0800 Subject: [PATCH 65/86] Improved co --- dist/hprose-html5.js | 6 +++--- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 12 +++++++----- src/Future.js | 12 +++++++----- test/test.html | 19 +++++++++++++++++++ 5 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 test/test.html diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 7994174..9e2bb81 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),v=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=v,a+=v,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return"function"==typeof e.then}function a(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function u(e){var t=new n;return t.reject(e),t}function s(e){var t=new n;return t.resolve(e),t}function c(e){try{var t=e();return s(t)}catch(e){return u(e)}}function f(e){var t=new n;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){S(e).then(function(e){i[t]=e,0===--r&&o.resolve(i)},o.reject)}),o})}function v(){return h(arguments)}function p(e){return e=o(e)?e:s(e),e.then(function(e){var t=new n;return Array.forEach(e,function(e){S(e).fill(t)}),t})}function g(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new n;return Array.forEach(e,function(e,t){S(e).then(o.resolve,function(e){i[t]=e,0===--r&&o.reject(i)})}),o})}function y(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){var n=S(e);n.whenComplete(function(){i[t]=n.inspect(),0===--r&&o.resolve(i)})}),o})}function d(e){var t=function(){return this}(),r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function b(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||m(t.prototype))}function T(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?Array.slice(arguments,1):Array.slice(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function _(e){if(b(e)||m(e))return E(e);var t=function(){return this}(),r=new n;return e.call(t,T(r)),r}function j(e){return function(){var t=Array.slice(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function O(e){return function(){var t=Array.slice(arguments,0),r=new n;t.push(T(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return e?o(e)?e:b(e)||m(e)?E(e):s(e):s(e)}function E(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){return u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?_(e.value):S(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}var u=new n;return e&&"function"==typeof e.next?(t(),u):u.resolve(e)}function B(e,t){return function(){return t=t||this,h(arguments).then(function(r){var n=e.apply(t,r);return b(n)||m(n)?E.call(t,n):n})}}function A(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.forEach(t,r)})}function k(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.every(t,r)})}function C(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.some(t,r)})}function I(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.map(t,r)})}function R(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function P(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function M(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function U(e,t,n){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function L(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function N(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.find(t,r)})}function F(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.findIndex(t,r)})}function W(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function D(e,t,r){e?W(e,t,r):t.resolve(r)}function z(e,t,r){e?W(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==G}}})}function H(e){n.call(this),e(this.resolve,this.reject)}var G=0,Q=1,Y=2,J="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,X=t.TimeoutError;Object.defineProperties(n,{delayed:{value:a},error:{value:u},sync:{value:c},value:{value:s},all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u},promise:{value:f},isFuture:{value:i},isPromise:{value:o},toPromise:{value:S},join:{value:v},any:{value:g},settle:{value:y},attempt:{value:d},run:{value:w},thunkify:{value:j},promisify:{value:O},co:{value:E},wrap:{value:B},forEach:{value:A},every:{value:k},some:{value:C},filter:{value:I},map:{value:x},reduce:{value:R},reduceRight:{value:P},indexOf:{value:M},lastIndexOf:{value:U},includes:{value:L},find:{value:N},findIndex:{value:F}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:G,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===G){this._state=Q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();D(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===G){this._state=Y,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Q?D(e,r,this._value):this._state===Y?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case G:return{state:"pending"};case Q:return{state:"fulfilled",value:this._value};case Y:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new X("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?R(this,e,t):R(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?P(this,e,t):P(this,e)}},indexOf:{value:function(e,t){return M(this,e,t)}},lastIndexOf:{value:function(e,t){return U(this,e,t)}},includes:{value:function(e,t){return L(this,e,t)}},find:{value:function(e,t){return N(this,e,t)}},findIndex:{value:function(e,t){return F(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=O,e.co=E,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=s,e.rejected=u,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},J||(H.prototype=Object.create(n.prototype),H.prototype.constructor=n,Object.defineProperties(H,{all:{value:h},race:{value:p},resolve:{value:s},reject:{value:u}}),t.Promise=H)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[v,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,v=new Uint8Array(0),p=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,p),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?v:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return v.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?v:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{ -value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function v(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function p(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function p(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?v.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):v.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?v.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),v.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),v=u.readByte();if(v===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),v=u.readByte(),v===s.TagArgument){l.reset();var p=l.readList();C(p,t),v=u.readByte()}}else v===s.TagError&&(a=new Error(l.readString()),v=u.readByte());v!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=v.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return v.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),v.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var v=null,p=null,g=e[++o].context.mode;if(g>=c.Raw&&(v=new f),l===s.TagResult){if(g===c.Serialized?v=u.readRaw():g>=c.Raw?(v.writeByte(s.TagResult),v.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),v=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)v.writeByte(s.TagArgument),v.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(v.writeByte(s.TagError),v.write(u.readRaw())):(u.reset(),p=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&v.writeByte(s.TagEnd),e[o].result=v.bytes):e[o].result=v,e[o].error=p}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return v.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return v.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=v.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function ve(){return Je}function pe(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else v.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return v.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},p)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return v.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new v,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=p,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var vt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),vt}}}),pt=Object.create(null,{use:{value:function(e){return Re(e),pt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:ve,set:pe},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:vt},beforeFilter:{value:pt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=p(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,v=e.Future,p=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),p&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f; -})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function v(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?v(e,r):l(e,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,v="undefined"!=typeof h,p=!l&&v&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function v(e){j.resolve(e)}function p(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=v,O.onmessage=p,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new p,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function p(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);v.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:p},sendAndReceive:{value:y}})}function c(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,v=e.Client,p=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new p(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new p(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===S){if("throw"===o)throw a;return p()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function v(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),u=y.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),E}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:v(e),resultName:t,nextLoc:r},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return"function"==typeof e.then}function a(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function u(e){var t=new n;return t.reject(e),t}function s(e){var t=new n;return t.resolve(e),t}function c(e){try{var t=e();return s(t)}catch(e){return u(e)}}function f(e){var t=new n;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){S(e).then(function(e){i[t]=e,0===--r&&o.resolve(i)},o.reject)}),o})}function p(){return h(arguments)}function v(e){return e=o(e)?e:s(e),e.then(function(e){var t=new n;return Array.forEach(e,function(e){S(e).fill(t)}),t})}function g(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new n;return Array.forEach(e,function(e,t){S(e).then(o.resolve,function(e){i[t]=e,0===--r&&o.reject(i)})}),o})}function y(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){var n=S(e);n.whenComplete(function(){i[t]=n.inspect(),0===--r&&o.resolve(i)})}),o})}function d(e){var t=function(){return this}(),r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function b(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||m(t.prototype))}function T(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?Array.slice(arguments,1):Array.slice(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function _(e){if(b(e)||m(e))return E(e);var t=function(){return this}(),r=new n;return e.call(t,T(r)),r}function j(e){return function(){var t=Array.slice(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function O(e){return function(){var t=Array.slice(arguments,0),r=new n;t.push(T(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return e?o(e)?e:b(e)||m(e)?E(e):s(e):s(e)}function E(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?_(e.value):S(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}if(!e||"function"!=typeof e.next)return S(e);var u=new n;return t(),u}function B(e,t){return function(){return t=t||this,h(arguments).then(function(r){var n=e.apply(t,r);return b(n)||m(n)?E.call(t,n):n})}}function A(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.forEach(t,r)})}function k(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.every(t,r)})}function C(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.some(t,r)})}function I(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.map(t,r)})}function R(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function P(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function M(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function U(e,t,n){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function L(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function N(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.find(t,r)})}function F(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.findIndex(t,r)})}function W(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function D(e,t,r){e?W(e,t,r):t.resolve(r)}function z(e,t,r){e?W(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==G}}})}function H(e){n.call(this),e(this.resolve,this.reject)}var G=0,Q=1,Y=2,J="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,X=t.TimeoutError;Object.defineProperties(n,{delayed:{value:a},error:{value:u},sync:{value:c},value:{value:s},all:{value:h},race:{value:v},resolve:{value:s},reject:{value:u},promise:{value:f},isFuture:{value:i},isPromise:{value:o},toPromise:{value:S},join:{value:p},any:{value:g},settle:{value:y},attempt:{value:d},run:{value:w},thunkify:{value:j},promisify:{value:O},co:{value:E},wrap:{value:B},forEach:{value:A},every:{value:k},some:{value:C},filter:{value:I},map:{value:x},reduce:{value:R},reduceRight:{value:P},indexOf:{value:M},lastIndexOf:{value:U},includes:{value:L},find:{value:N},findIndex:{value:F}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:G,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===G){this._state=Q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();D(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===G){this._state=Y,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Q?D(e,r,this._value):this._state===Y?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case G:return{state:"pending"};case Q:return{state:"fulfilled",value:this._value};case Y:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new X("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?R(this,e,t):R(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?P(this,e,t):P(this,e)}},indexOf:{value:function(e,t){return M(this,e,t)}},lastIndexOf:{value:function(e,t){return U(this,e,t)}},includes:{value:function(e,t){return L(this,e,t)}},find:{value:function(e,t){return N(this,e,t)}},findIndex:{value:function(e,t){return F(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=O,e.co=E,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=s,e.rejected=u,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},J||(H.prototype=Object.create(n.prototype),H.prototype.constructor=n,Object.defineProperties(H,{all:{value:h},race:{value:v},resolve:{value:s},reject:{value:u}}),t.Promise=H)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{ +value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else p.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),v&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f; +})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?p(e,r):l(e,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,p="undefined"!=typeof h,v=!l&&p&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:y}})}function c(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===S){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),u=y.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),E}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index e8823df..08a7b40 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("XQAAAQBKSAEAAAAAAAA7GEqmJ4ouDrh87LJR5ca3ughUka5Xb0yfyaXbFa9q+FFOwpIyey7AN3dcR71YzF/dbs2KlSZ+F1t4VsPuHZzy+jkHOepMaK9vyqoFiCYQ+ypkZZmGkD40/zYNYAWB8Nih0vIM1T36alYtRgqUg7zFwfO2pQJZhu/+u0EDKcg+2NRYlqx2uz4NPl2yVMZ24jpHvf7wKxNexoEJq0dQUjsS07YG03J6K+fTwzU8x8iFTRz16BwvwHjSy30vqc1r/zIRC56k84u3dMpFgvh3uAMNgzNPej8V+fIiwTmBJyPyYvsoz6vQ/QjJRkI7UoFN6PH6c+95GA+7/0uUw8nXykQUzihFI8Zh+2CjM57FpSBfVrX8RokJx1k459QUw67GBya+4ozGmjB5DIa9epS3lGqL4yDsDN/6QdupxlaMLq7TWNUMO31wSFC6K5ciXR9sJan1I67bpzs15p4cxlo/6pCevUtfLejUcICg0HS2Ew2coExh8i4DPXm7jMTgbNZTT8N2cjFbuJxtZAmOYUz3TfpbcS6kgtE5SktOKmGaZ+rBhAGGwfXrXO3SO/VcvHPGYoFzNrhDjpF6RYzDryiq8bBMV/D+cRT3XCTv0C2NDvxeVVU8/JqMcO77iu/Qhvd+QE4HlxA8kZDnEG4+PSxHtbQscy8pwbIcMfI5rpFnmFhkJE5G02dXUjmP6mWHiCFI0S+TMN2iPxE0+A/8mv+1XEcYRmg4pBeidlMVggJePSGUaUCheb4POs7VUxHl/e70R+fMwjcLKhMtnFqbN+yK+WbKIj25b2vZ2BMAnfk9XD85iGaQOSLbsOa5l9/Gu3Bip68OyjA2Sdf6CdOGf29QDu/+PszUzarcYbCeVOe/rpYI5ku8xAZPFG5BDa54dnr3/lMLad35PJO7Ql8hurManYOiPBPUaBzlTvV1es9nDBOAPSgewftdv4HD7QbzT9XJ3fuiFAWnq2vL0qREZclypi4yFlbQe06IB0vsKVAxgqlXwautTmlh9VxfYK4Y+1/q/VCZXFpLmM19wVzp8Zg5IQ/XKNhqXYg4V5vSyde3AmJrcoWAMUi0Jj+f7Jc4kZO0HnaVTIA5hQSGP6EXOoYcraKx+l74vRQ2G3jbVkpHYQZKL5+ce6ucdz1/BdJ/z4XyaRZYMZbb9Vo/nxL915pu/Ox5Tv4n4kxAyj2tLSZTg38+Db/xyMv49yLc0WA036GnCFyh9bphNXoGwfkOyTU2w/B2VXX7EJPj5PAx3Grpk5uoMoaOlwr7gz3G3+k79oWkkO90I4pZXvhkb/puiyYaDIeyhf0XvkDkbmR6R1MIoJvvoFIoCErGzVzpNwJ4UTJdFuNIwOpFDnnhkERFHhxVDfFjqzHBiLtuN0sxeizz+1vzDDEKtKfWNKJib2U5yr9Z9iE0SNyRPJm8/HujwxrKymmInGFw4YipDK3u90w0D5zryG5RYez+6tSUbHyPe77EhaWQcIDQ+N/O8VV40nF1cEz6ModEN4KB9/QGEh4TM4ARvMLz2DF9UCRZRUD0EmPKu+ATFsqaotcR0TLX3SjrA+tQOpbZ2kyChVcn31EDq1rm6eaafcTWQw7Jqx//4gBSby6b4nTLV1gs4Ne4dYtB68dT1P4/QBsk2d8Ydsog7MIFCS84wYb/A9+QcOOBj7IYgKcniJsOd0SOTdxz6lyHTEQQas1yWQO+uNvNsE6zpkKZZGT71WVDUJlW40vxY+j8EQGm9uE2DBFPb93bTo77cMhCYb3Fp9v9Hcsxe9HOhTtCiYGK7IG9IIT5dbggCXqQyR5tH/nNdGu7UYkIhoQ4Eb9zACq5+lqf5gsL6gjwGzG4s9FB6Y3Vx4TaOYXdiBNShrdsQKduuxALmwyUhrHppTykRgmxv7fxiAaKPrvYr8+39OebpgEAbgX5bdKehKzieXKZkGdBjWHQIWrQLmp2gMl18LJRdNIxFb9Mjk+tdefdTkRllYY4ZcXq+7fnqyYc7+ZI+Q4o01A8LBxPSd6onENT8taYz3FsNT1nfyKWOKsBMfA3hEQrRDjRU0PgGAnx9l0DiA8s/ZTnh2FHuH7TaPZaYuFEhcXwXZy8VpE0kiNW8rMi4aVhRbTZub50mSItJCg8AvLKjv3EwSdsTq3y6BrdleAXb1KkagXJAhpfGnuDFCqkKch5mYfVOSJaUcIZnHGHtmks+W843TfOXZiTTIv/cjDJE7oZju4tTKkblHkjpsuYbgKqf19FyJ9QyhVu15yw1pLImIskBvS/9rmo9uXNylfevhaqs6Ao4J1zWgzwleLzAB9JKm1ZbNO2+anMdxJiOAT1q17rzd/nlIE0luNuQHyzrT5LfMi3DobjqSfyLxmAyhS9LpEKsnPmpIFADf8Jtl7KQOV8w+cyiriiecH0frmNOd7jm5pz1Vm89fUuLg6htz2L4LG924Mq6JS8doI0LEdFUgHruyGgOe2oAfadPySE+6CDJfZwxW6c2Bch4+U9N8lqhQbe7NwS8D7auzmE4Qf65TqtRx3+iubN6qnnW2zk63AeENi5VZT41Wmxt+9a/na6BuoHN5D+KXgRwSNXZFphVtaBO+13XAC2+HiFx68WgigBEsKTUugbqrKw0xzolKT4jriCl6BrQAoAdMXYdHn4cAgoukJEZ1dnpIBL2Hgovw+HkO9OCMl0w+lLmLrigIn7C8Rz6KMLvni3AFZ1tW9iSDdGD7hOwMYedkpCRgX2L2RiALoUxBM7f2JppRC4VpVAxXmm9BQOrQl+U+6wRnk7eDS1Hr7iKa25eKHnkoDaSYMojXzQK+bTbgSZ5MCiS1U4Uzo8TjwFQ1ILAWwaZEK8yrB97j84eX3e82tCZfktiR6YdQCZa3YSpI0w6LiUVPlg7feMyZK+/p8xAucqlLsUtvlD/+Cjw0QeCq0m4kc8FXrpU+0zOaC8FI0bywvo+CoDuaQf1bymf+DNjwhqxO/1B9+JxxZkaiR+ONXEtpYhDBuo5mopYvbEMAArizMlWHhNPdj9WJcW+RzlTL6dCe7T9HdfWQ5v4mLMA2wEAPkH11FrhyZEfF4EvsFPpsRwt+hl5vjH5ofFdBBHvpEluUlEmofK+wiqDYHts/PP68vUsv+/9sm02WiEUT7kzCpxPxp7J0OxT+YTzVcvZUzjYtCrbiHzjF6OBqFEuh1DTAvzibp7vMp50LequshSzIx+wejJq06EdbR88uZtB7p0YFb+yDtJ1erXPv/GJ/oAsLwiJNIq49DxWlrhh6khpcFHSJSIaSdb8kpMxFKdWFRJpNB3kF/vY8BfuIlGR/taCNYqEjpZ5LNObi0KFzsHJr6vDgbfg+x08SAtrEOEQeIC9mvY/tIXliCciPJA37rWVC8m+97LZ8XJCTavxwyUM5QVQPBAI+tyOqxbeQlYZfU/yZTPm7nbpE7go8YgjoYrJRvi+MGMkNm5hWqdKgjL4GXx83E1LLLjYcVm8F90IMN1+ow4a7yJkqHn4WVTr0oH6SXAW80VHxAo4GIyAdvcVfCWS1lJgmp8rPkWFYwtr3FIjsUejkK6gkdRcX96nfDkXhjsnD3id9Aoad40o09xXe4IIU3Ls0k8Yaho7rHSLbVIeL8hsZPerifwXZh823xNCDw4XtqSP/FXatke477O7YKhhgKiYrYVfASujuWvcFMc8f55qogdmiHIHuRJsqCsUCvLHt5IXS5HTfajSL1D5J3toFd826pF7lcz3gd1DjD9OlaFXS7bHYIuYbuRTEx8t5JKNbM5E5NGrf6GweHkT4yL4qobYZTaJ3xCixexctNic4Utz2Z1bFetnDbztuqkX+ofk1dgAenQc8fURvjTtNY2hLOGb6mPfzv1HCH77+zkbsAunwD6MxMSEG1BKaI2B9gna4SUbzVNtSR2pGmrSERfTqMO3eB/u6j5YvxDerVHsxec+ataARLV3t2LRFlWC/ktAddHJ/y+EU90GQpTcEhXaGq3RFJtM4aoCLBoYUVVitB/P9zQDLWJEPPATV6BYoj8GxyAbl3ouVJXg5n8migvAav6Na2PbYsz4lYPRl9XeOc9Azt47J+FMRRcRltRKNVAFcl3mX+O8gGjQJ73AV0jY5OB7rEkJjLX0sV7sAkqQjLgYfoBZ4DEqL+B4XTtwqjoQZFPOWvFo/p+8oM4WDUS11bQaiZsHUfyyfAjzqeXP/bngV5jrFLqAzt8W9ytILRaigiya2JkNTXo4kD+pkKJvCXOOm2yHBYfqYcnBOGHfe7Wyw8PHTXTTpHvJ5kZKtWVI5CODhw7W3XhRShKFSnYTLMCPdSUbHaQr4+YQB7pYro8YelGNyAcGCb2fOBPHwPAojCj10d3Z8ZHaqgt8rf8rxWZeNE+L8HMwVrGDzmSuIJ3v1C780YT4+WJ5QR8qNHmXM/1IfCcT0Cu0mtBFcwF0sJjgUFpev0VUW/r9CMvhq2fWfMtCddsV6LgPNGTSgIaOUOk/lptUWcr7Z+sis/m3D1/dCugp6V34U5evBAkz/XUiIoLv3Too7OWZ0mjCbLzvLueg18JRV8qStC8tcJwiVzatvDncJ+DTdFej751/2sBhrI6Z3jeNOj+VrKoQzNZu3eZnVlNzxpC8vHvou0e2jasnMi5PVYUTUTr5IV+jaPfCd623qGCBHYLcVfNwJLEVspccj2dDKxcOFx9xkCkebEyodg7gKKs1UYcmMq9sDKngrGpULnTO3zquXTSNIwTQiVhgO+82T5KZI0qZUnoZ4hNSFH3HOs2usMl3pR/mT35B34a2BSQmXX2Hb6etoq5Hm/mhuuU+3Q4p/flgKl9ZmRLmE0LPYNHjjkzBHeS/kCDJjNB1qIY2mZM7K8rEvV5BmffgCNUpsRQPGqBeHVlzB1157BEI5UHwU5mOkcDI33zAX0R6nt7mIf533Mv6vJoe/l7Zu6pj52v9LyKVbh+emPb0FZi2JmT5G55W0I3EW3ot2W1O+AoIgXEAi+ZBfeCaf2sJrgm5xnyefXBN4C+1/74DiHg+btHsM/E1GTlhmDQjXGQTcaah/t+SwNx1oASycZz1zr/0U5sARYlYceg/I78UWndBCzLvxvvqzRK4YKbbg4gEcW08hGrInrTl9H6LdqAgzswoBY5KM3F8rAgjSAUNzmLKC2X58uHxweJKB3ccXQMZuzucmkI30hbzLVqfQQ9Nggq89T5VMSY1CCa2pJ9zTrB9j0Lrh9b4K3ey2/ioCULMlJcCacGLNwO1wQQUaowSiFi0xvrHcqSntV5gidPJ/RAQyr9y4ywL0SesClsZ36pQbLAabndPssplwqo1locv03bOX+i+11f6N0T+Z5sZfFmigwmvbFsfR4Ah1uGit6fpUMXXDQ3QctTC3TIOdiwlMCFsuKNvfzqlF5BQTbwkqgufRPU/t1B7XePgBVr9diaUyN+Wq5MXXYNldQe1KcOksPTO+8ctA34RCttHnt/4EZAvUpJj/eVYrncWgk+YuQnnZvmBqYSkur9fiutso1Bx5+4tRw682XMC0Evt2FF+0ILo3oMHdXOugR+twUIjqrAdyMRbCOMNO7NiAea4cPXPMd7vAYGgDg4Ffi+pj7LhFGoAoKARDmt+elfOYSnkq9h3UJcs1+G1Vw0NtHAN+7T05fheJS0rhxxrBOa5aBNpKsCDYgJiWrNq5+Hg9Tk7HjrhSFQ1VR5jqEfQDwyjQbgWqV/Gzb25AbX6TpSBmtYQVwrWnUwRtyRMM9IJN/69xljbxdSJTGmWwuCcWiaIDCAo7LbfVS9iM4awUvNA/2FEbugnVYmJoQzFQFBZjsPCTcfyaiZp8WoWYvV98Ed1NNGlOOpudcSkmiXi3rSBzvpSOJsXQpN6+mDvns8oMxABTtR1uteUvpWF+M368lR/UyE/mE8jCLyr7n680jHuvjz3ArdrgJTqtwxslrob9HOpXpmEH0Dtbo2NMgqBSRDBYFDWzoMF92bmQGdYB4fsNXmXRm5wVMmi5WT+ERDry9/e+Z2F8+nweitqlZQXFHl4uSMVna855P6GAO7qtHaDNspkXGmfabHoUDht8cFr9YiBP/Ppa5QgwCxmDDRP/MSTCHCGp1LD1nOIHJX9Gg42uGWsc+bKZFdHG13G3Nn5OXmZmbPYkbg73Ls0Pno89nwCaIjE6QesQI2YdoDjO0FDaJAB4RV5dwG0sN0EL26J3ppXzhzVB3mATwDk4F2Jcyo+kpr/U1Bi2GFQlC/9EyhwAa7S9t/9F+gUonCQ/pvqS+blTw0/9Ukv7ZV0FNV/s4O3I34aqe3W1WakFRttxtycT9rVARYjQqf98xA8TPkNbALgSp7Hzwpp+zFXlf0GLQd53MpHvXTqL4ksft/Eno5Xg4SW/Objq/8EGL59IDNoupOIG2HEYTlju8bXhX7HzjN0cGlIUhTyKvmoa1kxxvpODnqgkiY0MdLlvlmxZVOcTOAR7Sj5I0tP6va/GrHb0cy+5uiSwsTu7WAAhzf7p7I1f9w+cmIJgooNmKuzNQcYr/8aAfk1qwDyZ/UZq5zDz51u36JB4vo1s5BOIe3cb7fOGNAuaL9GOxeWe5FXrLwM8Ydr7tTk8GuwfzSSEH62MBkhQ3/RhaDOHg46WJkOic81u6wGrm69YujEomZsehjUpKod0CTiKk5Wdd8z/q38N1MUmC9qmws9BCBuYDcJka+JQ08VGAdnFFuZpdkLThKOmy4QHlonHzx7iS/F5v9/kc2eDj/2HT0dlaiLKBfOuLfZAkLzLjuHjdT56wrRrWZiAQ3sxygdRxtIEYIuZLBEYLg1SI2vGMnkB29S4GbjX5qYFIHEay2kPoZQwoSfQL1N0+UnNnDcc+fYiqCOe7Hm2+hckUYihcUMjtkoZ2i2lzS3ur07yiRg/aaR6FcA4bKw8+6S7WgXNdOYA8vddKDWEELcr4/Jxy9mcDEJGK+gZw/GXFKeP6BbCcQLrV0p/TlZpcGLXLcqzfgcgPdZC25qq67/ng8lzgChgRVCiBievjLlEY6b15f0GY9d4f33ZzcLZ7xrqyaBMGiyBwqhiMi+fudoxdw2c2EdFAHeVApAD7F4sdIXoKBaJtJ6PzLxk3foQpqHdRLfzMILljWBTfVebYZOFoh0MULxKpjpn9uIj3ZlF2tT72vCvula1HEnmPh3t6nN5S+zVSpDt5kPOS3uglnJIgLJYsYNHiKTvYaPCmPPohRcHrhoEViioV934yUX8HDUro6zaga39aU8zoOIZwEtAuxz3kUZcsUgqUStYVByefLPGpyP+ZMpiQdZJtX+F6L+ZgR/sluGgsMdeDMrA+xqbvRFkLrLGjv/nYGYkq2WWfirLfxcttlNsznhfkiBUECoi8dMSSU57Oo6A+DaxalrvQGDFctSa8nCInjqC8spwBmBT3z6h6TDhvq7+3Js/ozfQrnKpbIbKfOxsuiuCnnYVPxJ+wg4UkbR19+QbgBpjS7HJb7u3UglVK0w7cv7KqmiZJiywXXzvOunxLT520sm1JxU7Ff/3mZep6gEekDvwe6UKQOWo/aWZ6L+Q8ZbYevv5mFOZktNiygAiHWnuE13aamy+izzH2Hu/ZVK6L5yOgLg2rSYvUeacMS9nXJwRpef1omLlkgiEAvSh4hZ5sqLsH6/pmmPI80vu2itMZxlJIRWdmKOul9W7A7wuMi6Y5g5uJ9NkDr8DkGQczeddnaRxbt9BrUSMyeWsKEqvmyxnMhHzD7rwbHJVEdeavURICuuV1s9chKVH7+b6w20dz9eltIry1kG80XoOiVl4AKOhvmFu72pYO4/RqRM55pcOOWC+CuExkK5hNeqVPdVz64pKnqbDqWcWQhRVP66sfJplDpB573EC6lBsxEfjPMppcskL6Tk6VW/IHyUtv0kAmXlqmdM4MYhKQwjHBJkJuxfJZd4gZOqamjaymZ0LvOOBo5OcjieBzyPZDnxl0Ie6uJvHlIV5bYzZpGUmkwQHqlQXCcugvjj8oG/bDsXQYgBD0ReoP3KC9nEFLCM2NjIllMBO5Muivcb7tMQWrNvwVGvljZvdJTtm9e17M5sTdNKYy3hkoAkkS6v5MFuLqj/09aYP+aeGexjSZDoI8spihe+93GfXWlafyIPe+sVil11Zwlhm/UudFZ201qLVTwVnArZDy58lGKYaMHjRzY9658G3RbGctaZ4zId7Dhgcm/g2KLfJAJWgi3DX1ZM+r5yuK6Wq8Cs8PK8aOZwkxKqqsvTds71SfAVpV4gv49lcTydEGdXWNqEg7FxSjf3ybgx5zlFHTTWj5i9+BteQnnoV1wWVW6fejOejF4CPr4AGdWNrvLlx9g2b9oWzMfY+/ogTasmIy5HwTebW+F1IEZAsMkv4d+fMdYk/5FxSYPO6VWzArvr/hW+GKQQFN6MCL0jMaSNDj8vio+ICwiCCp91uIsZgPUSSgohiW5jlZIduCRGM+o/ukVsnU4Z5XCv4DN9em77X7fY4lIZnL5WWky86udEY6b3E0UxsG39f9KTGV+A6sqW/VyhoI8Ijh0V5EWPVTMwZofVHtZ5rUNj2p8zZtWe/auhADduuYc3gvCXvscbGU7VX3K9HuQ6DWonTskg/BK5vL8R2Fg3SjT934Ngi+onA47msH2rfBe3qbQrxOMcIoN1gsih3ao5y02MlbDD3vLRjdrwPe5svayTFFWlVUJAdlG96lSm11QhvcQ19hFQsbNtXT2NKwlLTj8wvlHkDKCkBOX6068JA0LNw+bbDCW+7Y3Uhk2zOGpiyM9WDq0aw+3dMV7bl9HaHelkcgJOvDhqB/a1tvw6NMUStoQhBeaope+VE9bN1tMTwzg5YfASYKYfss+mCpP/k6K2zeGP4t0eb2HrYtripIobiW+YGpVmvVy8izth9QQhxM3G0tZ/r0mejoFVJZfG7WYJTvtHDOe0r0qmDrqdYyz6eiVtTc1bJqyKsuQ3ifefrO6KlT2Rqdq/cdcvLNYDMNOWoL7aJ/npVtWMR0yrcv2HfvHf+bauUOw4JYmLS+HYq2D1+z8HEBapIJdjUuXh3Xlhfg9lST8BwQ8mREkbJpdNnC46GgKaIHRC2rJG8p3oUBaMK8twTHbsdJzFqp9r6xZ5B5TRHVaRxNqC+wrBiNUf/WOaPzEyic2zafQHmg/IeVWSlLMVejfOzA/7sSnh7SGIa7k5/+X5bHhcni5+g8wm8XhZsPrYofGOdj5xnBWMlLoUrQbMhlQkL2pKole2lMzp/0GiH0gidcHTZkRPTkzjzH2X+J5Z0lbHMbxbdf/YiZx/0W6n8GjKrZ0miN0TXqi8bMksw5v/iGhlysUwBo4Mvwi5t7Cxu6ChvClx2FhDy/N1YWWz6GrXIze5bGWWD/lbR4S725VH4/UZdrEvLD570QbDMv7GugKjBQNnJvgys1Dc8+7r1ww7EF5bzzvuBMDHjS6duXn6rmU6vqSr2/owi12gkRDNXxsshd5Pfq3w18PoS0fqTUapbiaqK2dDCf/ox9o+2VnjwUbDaz5zjRTw6webjpPhHAglYJZ883EQAmbQbRSh0xY9woBsb2iZiPz7sZklBjm1dVHwXbh31Afd/dvBsrB3Ss/Y8O17Xdbyw2VDX6oT9OtaaJCa+rp5hdsrv1E+Si/6Zwpbq2PuMp30LZ8oB6VYSbCKgXO32zGe/p/2QDX2G+8Nd6V7Cyi1xT8dDdObpIpzmA7fINEbhNLUxmr1+k+ji8NdbyDtb3uszegcanrn8oFEKX4N79N2JcmrSacdXXivTo1ZcWCcs+/n0n952zvC4hqa+qaaXwLa2DaMBLto27kKME+IeSgUYGzlu2m8EAdWnvFVXGK0Q1/vUJPl4uRt98iPnXwXZBVDLf3agM0jySKBjl7MpH7F1UKgv/p32VREMdLYaQt1HI7VdNMFFnGOJEIj/ocfU32HEHpvQRDjCJHqjO0Ny72wJl6CQzTKihjRO5i8SmSZ7005nCHDsQhr71eS9abgOF2j3iCdPtpobIgaXbMvQj9LO3K5FllAG83iT4RG96qE4ncp10PS3UZjkjj+swmgyeFMYkg033Lxh92FiCYHZ5iVVGblDfOQroXRS5YiR5SnmKxLV2aaUBKY2gY4FLwRo3ep7gbf0QtdbsXe5YFXpSIpv5Ff/CKirCVpvz+aID/nlhOlekFir2mVOuP2Qf0rjZJ3PhZ8WX6XnbQhiBTm9lxgAiyQW0gzinCHV1y1sZy1Z9Cm+MiYzEhwBvFgLnR5ujrtQES5ESPRruWcxWrq5fjz/FehiM4TFSJ0X1bVvUsblVp5AkspcXq74hREgA7Ac5py02zsnQJhia6u4H06ndItNVE5uJ0uymqxHVtwmDcjc4akoN1qlRHOPgb/lZuIO9UNazne6NppPsahI+8QawXuW1fwlvKqIMqxQYpx6MfMMep3SEx4wtraeCJqp6nVMDs59t4SfNS9YXWSAl4uhilfxVeEGa9OAkpmWsLRlOtxtCRRjy/WMYsobJHcaN5vOJEvpJEBcqQwa3LGz1XYpJg7uS3X0stQRs+VcuQzCHs6D/Swv/+cPT7ACr+kcR7qyKAsj9wf5kC+OJe6NHBFzAClTlUntLIGhUAfgjS7iquS9rtbKqUi+TKRT//ZkN4DTyTz35MAUbh68zsBepq8sVNfdqRxJzfO0g1G877EajZiYs6likJHnveJkDvaKgYfdQ1YfuMLKKfFlG4nY8Bhx/D2d0I7sKuGmXNwdDsD5zMN9U7BIwmO+VWJi7IdCvy61AwDHwoTfIM0m7We7IW6AA9fWBnsMM89DVrhnRtNmcuJqNi2brb2ZDfL/likH+wwW1A5fdL+8gx8wgUGE9r16NR7xa0geKypdjLqzlcsYq7G7jYxj9ga4QJJ70brak0HMSfAm6h4OKXMq8rb+FOA2M3F2Y0nZ1aJaZLQyei8uf93ncbU7+Tcf/tCqARPjABd9vaJ4agHBlhhrlg6kCxenfi1bMTw1xOpCzIx1hzM+4w/p4Kr0+zAkmK/HEZqvnGgUKjPiRc6lOLtSzgvfkMC3ZdgTdoZNCx6vwogecsb6DWyYAYSJX5J5rA1xf/T3hI4RwJi6vBij0QX9P0WSsk0ESrfneMAw+gKIJzcgFTrcUMxkNeZ3lbyGsmFQyST1dDAMOFEv32j6mp6n1hcgoaemy8yBgk44+zpeKKOc/tMRsKVwCrUYkzajXyqo/GM+cKxgExcMSb34fsyy6pwDBC8upPL2uNzdR5c2Bkittqb2zXxk3RmNKRMNVhgE3OfyixCYaL+H3sfkiMHQNzm1V5N+4mjSUBgqmPKBxfBe6t1j+91Htde2uvdhdoEciKI8FsFD5dHvCH6XB0gofxFjr60dg/puAlKsa4/ZXv0I3+tL3C2kuYbNDEnm3ZhXpeo0MBBOeAtU+gQLPO0m6bfrK28pkBQO+Nxwajyqwdw4EGAIGrvW6PtnfzehHU46WnYGr5kNVyILQ/3P7EndmFwMaGaVTVvXjXMqEGoM2G+j65n2u9ij8A9/bBajVDPlJyV1tJ0VnHyvDCo7s3o303y3ZcNZTzTx3F/Zi8NTAz4PuaNmQOmh4W62VL2DSRgbeeaYSFBjR9i+QL9OpnLhweoB5l8cKmLHALVuVP7JF6sbj4wv8t48DbAobY2dpY23Ttb05CV+jAftWzROUN6/7TrS2mD2wjm8cH/bwYiGAk2CQ+HEZGN1mk256vjf09U/lR4FCfKLdiFuwXmy42T2VRL6Ci8QU5iTQLlKnDLTUmuvNZi1AEFxN2s2vM51v/u2ElkdC2I0b5PJnnL3sbJsEm46tl0e2ALJXaxK+t1Qeh3tpxGCddm6F3V15MDuBDthqWUmyYlqf81hNY1AypF3KUq/2b3x8IgJS1gPZKa8/PXP7DcZ/8+05CZ65Hv520SrbEOsVVrvLzJvtmh7yH+ZFJXh2Pz694F/QzRWm7Fx/Vcg59FcFx5pYtXWAB6U2tp41gJSR71xtDjy8ex4zHYPved2KvOoXLszzrrgNzsfdLrn6wUdf5rPxy7KBi5w2oiyAnOTWwSyh8rh5ohyHKb2oejAl+oB/IULEdLRFPltZ8i6AewgkNmifZRMyh3aMNpGRZ8RnYIf7L+UDOrJdoMU0Pe/wbKajRs127W6+9lTr4hJsZZ2QQTvGTmjxIUWcEP27TXi5atQOAHQC7/QABNCV3UOGpJ3jSF/G+RZczhgxQnI5z9rIxp2tPIuazxInCAqLsuW0yohx3biLzwRBemfCvDDNTQH1KnM9KkWdF80Xulk5TnbMBKEDe9ZKU3hU9jIuybeV9+WIKDWxa3BUAosWrPAK8OmTjq5AC8NjUbuXkht2HIBOgzrUJ7Ycf47UeNFiPqUlqcScn9ug8auE9kz9sA3HlvT4/1WimgiBcSPRd2WhhkpxxAjJYedoWxgpMvxLvVThcAsSuDvHeS+yD683jvKCFyRHQ25WdUGxGiksVjJhkIUE87ZU1JD8DKs8/8WVWd3a4sDeBETxkmuWAujcpY91Er1x9Idh6cTVkhLWpAgYP+XxnK5SgIkBhRHmMnTtK3eH9D2o5Uw+dKCcs+Ogz9wXW9cCxSOzo8bVH6N52LxSgh6sZPnLTR7MxrnjOFq7C9fSrMxnrvrZNvNNy5375FwDVYwc2gnm8BjAVpVoYJz5Nntwv8K2Vjv1gyEtk6md4CHCYm5AnM1Sg3JfoPjvUdnaSzc+7wOro8tDCxw/3jzzG6kr/AdLEZZWitFNuvzjQGlhvZeb/jQ6OloABfybPPoFrmHLwsdzkd4Az5mO52aJ9FfJBLlBMfpR9YtZdjsmB7bCR91WTnNf4oh4+Camvg+soskp/VPqneAJnokJ9DxRTCH/4JSxm3Xg7xfpfmVwvHYJuDYoCW+G09Vf2oPv9kX+e9r3ipBzzW9hT/RAyvC2l6ImZpdM4+H1bdTDwzvKf4pjN0B0h+wSi4zufm1hjWHNcyvLiC1SqZ78sz3BF/LYG/WHNYvoFSclEiZlpF/ItDo2Knlgm83TRWRaAVoctQN3kXnWxvFhNV6C8aaDjewHvFkbfydjAO7GYruJhjO2OVniJipkY0h7VKogiDkofAM6eXvt3UcXbk2ViJI3jiL1igpX8IabIv/TIL7YEdZVY0r3TRhsPX1AwesA91gD2mTR2UUDSEnM+26wIbNgVPEmKPSppjgAmCUzle3ipibYWG3xxmFbq+eLUKtnwhl9nUP7u29bwBoC4ZtZqNPKjRIHeTzpd7/C9bbixR9XIoyYSLXg/lbyNWtrIsjNOy4aRIEkcwAIrIrkD99hG3X0RzerRwX8j//GR9R3D6aAs2E2b7hYwM1Idy1WCc6ayn4jnKLnhnRWGEE/RQqUiTVlPNiTnm5AcJ71v/sMbPmWYltj58P6HA+mjVha6ut7BIb9JaRG5j4T3r+3jRBQKJJaUG5cQ0/o2F3boTr+PxI0m6aDSYyjr6OFiZmoEB2MFdPuUCpAW/qAY1U9SaFqDWWiLOMwyMA8U6Mb3w6oiZmmj0Q9tv2tr505qWTHjObo2S/zipWNrd6++za1/5XjBB6XIfjLhOus0A96K5b12XI2+HtN/IDr9TRHk/R/Fm2jckvnB/J3DEaqQWnW1+RhWKP6Of4WiNiTX9kLeaqveYWmE0a7VxoPajyi4sFQG210dNjKAhOHP/Q32f/THR/dzfhyi4ydrz/zOVJqGmCOuJznApGNDfaptwQWv9f8/loajNzpiO0wqLMYTthyfgJD2e2hXhZ7dvtP2Jbioe/ZmHA29iVZCIw0OKFM9GMc22Kgu33ZuzJoeXCvpg1J84h2rqY+Iij4kmeksai2pFPg8kjTXGOVHxlEyBkMDuXKjZ+QXZyYifOEAGJ47Q6jLLCprhlKjvPBDxEdJx9lhtYNeIbky7Mr/yUYqB+u+uxk7zMgIKyM1NEqFwyMZLyl6RqNczlfbAV51ZYHGO3GHhn1VLOQiKgItH6RY2M7VH6QbmLN7PXcC2ccp4OqarbCptxPmN7JUxs2KiAIzIcfp0vfE49DOx9eYLNHxBQ5IO++B2f2Z2p9VL///I7uekDCvnu8eFFsdi0lkhaInVNXb8Dtz5EB+k4Xj/KEwg6mqa9bVLO5i+gQXQW5tFy1WL92uqtG3yBgdrF5wWrPDaF5BNHOUnACsx/cHrYj6VReH0pRde+wD5kScheTZCw+1xyTHFkXe+h137z5h9kcgg4aqoTditl4p7zM/Ytrs2tzsZ1e8JfPqUTsfv2tRNoQR8ibIphtThjIT5TMNDNiotS1ir9upQLtC/bKi9/jZEYk0SH2iA3lKEuFFF8LdSBPwUypKjtm6/Dgl7brtdn/MVCJHvIzAlsguwu6UDGRDwvG155VEiIZmUOUG7wKDJQYwU2tWHRl1XO/DbWlQvJ+Pa60jSwL/Z31HrOvUQ4EKciQKv2rPYbr9mIGPnkIT7WK1GvKgop+hnkJzjL6PPj5aLJjKnge55oTMrMy5x5X/nrktlMFxBNVj3F7yACrB+oavNzNKPC2UFazBt6ZMeAO5FlagFf7GVbncrgGQa+yT/qWtQ01jDI9B8RvtvluFgduWehJ/6uXnM812n/GBb/J2R7ix8vkvGCAwf89kL2SUecA8KBhQx8FSi/AtAvhiC39XEtLSzbJmRWnxY9XlHJbVT0Q0dQRdGmZ/dcS4qzYUZ9+1lFvo84BwyYJewus5IRGiyPjulqJWgSD1PXBWOLbs2JXyJxwV+x+pJ/mh+Pt+PSHZLy2lWdFs2tgcmIWCWezThrPjNhNx96n7TSUkZfZNLBdL1A7SJbfUoKp2sDNE7ukJVbmqF9UxsfEQT3p9TkvISza/jQH8Q4hNp3uRw39BJabz0bWuCbWXbmFuQ5c8guOuQU/pSZHMJ8WS/YQH84nQz69nj2QniIs2l1gp1KjTbIIWDcjAaiHJmUednO+RynX6KhMkZvm61o5EH4PdWbkrvPwspUx+dRCjXTSgja2XQ8U9uf6/yzqOLcMiCyKyL42lXv+W300E5ZkZ8/FG0wN40/3YZvizb+9QWLEYFmmv4wDQq0hSuxrmLrI3ICyWjE0LqOD5f9gAfaNVZP3RY5LhbMIR58N8IvYjecS3fnqpTKabDZU/6EmDDcgjBaFFrvaE4G2CYvARyfzCXPXIUFAZrZKMXW29UNKkdnbqUlb1uz+5Sw/ujdoXsPQcbw/bzaEnwT154BSNUlvAtm2UWsLYiEeEFzzvUpBVCRiKBvNcyCucyvxhQqRPM/X2+8ILAdvwbYFcPE+Z8A/V6npyiHyJER4I0/AwZGcJRYSDkPXW2+alylIWmH3MAFDDNjAO3cz61XKFcjt3/6zJO0/XUooEApPHkPWVH6lsBZtJMWBp2EHFLEl6SegcSey0+sdZhUDhVA24vURQbQRmEebMIh7FaX1V7WgmoqZ6S3JqhE3N37jv1SIypoWELwQuKAfvo+iGF79FvBEvosM8sSGPF25OIHawJQ4pqbxUJ83wYMVBjaei5tENZ60jDh7Ukb8QnVG+RdX7F1bLF8yUI/PU/zUdTVGHU5A1jMLjGPGMR0FJPjQ5DJpN30ncVK2ugYQeEW4rdofUBmfgI1srAFtF3eeyz7xQjMPKER5R4OdXAl+7L5Ql0hFPAwVfKOEjRWYW4HuX0WuUR+H308SZeMAGMKIV0iwZmfPAzyW4bsyWlWS9+sAXG+F5Q6orupuGYfPAEworfeV7ecQ7eMY3dKmoSi1GcZfjwW4di3pAwpk1Roz0St85NeL+jtPztIz3/1xCSzFxlEQJQf7qZrIECIZtaPG/Cn187KmmFhM6v7gaNCcNz1uwsmNJGFbMlOIzqzLt0SzwOStMLyZ+nnc9KSyDTVBrRsj03WviHx9yIowz2ttJmt4F6frQeZYfSON4n3RHk6SdCv+WVAjc8NBh+WszIZXbPKnBdRnA0T+nmNVaMbN9DtTjufpQOauW0CHcbL6KCNzbDe5sDT07rbrf2y5vCREk8nUKi4vtrU7b69UjwWmaH79AiOw08Eeen3qCTz+EoOegom2704EwXtyku664assFDttn3HEXsaeJ3ZsujiQiFf3XNiHPnRvJ/AjKFT39Cq/FM4DM6V7srGT+9UQ32nOkyGXOnqlPYkK1uLsFC81W/XVryKvq34f54WQ0UDhUCd22jeT2uScnToZMUIh6ZH0zYdxQx9g5APi41MKVe8DNqGIdwmt2RNHUJENxQBgKltrP19iU3+TsiJRGSovbOKOiAEBkyNuw9HL19PZuGqaZI7zotKtxysa73Hf4NhM+OGq64dX/jhM/tLmJMbjERTN4sqyVPFRG/GgE8H4tfp07L/1t3epcnjw7GneO1+2rhxa9+vjVTw9rMgetQy8MJtd3oEmFCqpXU5vP02xbs2fYsV4bleyddHruB+Ikt/nkgxVZmTqMGzsom74EHdYNlRWkQjK+Xlz5Nj/iNgjhqsI4gXlbLSQSEpSRBR6KWbsnilJVnhGr8SvHKWUi99jCZZ/sHfJoUEAiDlJ9Z755CN9pohS8GqFZy96yUz17wYOHD0gMhQpsC0+riDSzD3I5gAt5fRzm9yTtpciTaBWxtkf3E6Cj5FmMGr4RMmVOgOPmNGLZXfs1PjjoYTrYMgTNdNxLHXtmDlsg/5MObpkCNI75Wx6VgUiiXquc+0gaXg+pyq/KHo9dPlWxxp9l79YLsWAcqDj+/DzvSDykLQhUB7AeEbxji+0qoiNxO8GizRlPDozd+IM8GxiuMrpIdUHbY/JjeMX51OJVPUt42bWyGL0CmXTE+eKg0rMzaiMrmh0Ol+vesXKJ2mep2/63GOxz8pEraw/orXIllqOhy7yb16PXwPe/ShtbIrbFHJa4FSsRKm/cUG7wWliZlFzl3V9gQAkD5BuQZoux3Tufyn8UAlBhomMEuQzFtJ0xgc1n5ae2kTWATzhizEP5/gX62hqOBQ3HhpK0bCBCZ1elydKiqXos7KBMu/TS86tjNxYC34A2maaMGAov+au/9u9GnfnqJvmOZcRRlLIe+fw5i8yIjtxBGnFG/tnMocFK4PsJX6mbRm/79E8PZhqZQ737I046r4LOLYqQmkOzWcKsmvqs4pdWr2z6hsMQ6Us5Z9aY2ZZsS80Bspdm3+zRoYcVGiMseMRaMLybtcQeQ5MdadtIPQJNUo443NW4ZiP9haYimn5wEZXgV1lYftmfqT+1XH+bNVYZ5Oc2VcgHGQbNKL/V2zXF3rUL8dE/GVEJXBUJ/n+pDY1YB1bJMind5CUopMFQXM5q4kx0SxTO2Js/9MRKVsfAW8f+LOcA19i25/RTX140zGYuxmr55vS9lbAZFO5iqZ0KHCPTFxkZnFjxWtgN6+6M5PtbL+frOEOcc+5BhZqxWBaY/Bq88pnhLvCtREMhbDQpod837fTyUJt93JHjEfQrarsO+qOEiYa7pXDhhxSLEY4+wL4GDTlLnfhcoU38PAMh2E4bv0lynUnVWqOTfeU2LH64z9oD4pWpb3RNKn/ws43i2QDWaZldFE4disQ9h2SxqOhSAVUdstkZZSmUWSrEXuw+sB03j6Xt+ymiEb+w4wDx5WaidRu4XiloLYepD62t+ZCsug1m5yfbKIfk3FfhhKV7ufIMaebvNjtvsKqjtJXMzTouydHET+eJnyQzbZYfHN6zXfkwK+/cDjr79V2TdsOYpmUmqJ2qxdsjtEBrC4Yum46DaPf31sCvlUVfVJ2iYHR8hfyI0q+Fb7fQHisQVQrN8DmN7CaoCHhAvmwUOcBOdBVVT2TAn6oS8pLyOlXUMD82kJUbkbgeXcF+IjHlch4/k92txy168vsh4EAssOBmm8qSLCWBRW1NrTmlQCp0LQzol3qEy5LGYkZR7DHrLSWt/BHMIAaTrd/2y/OMwY3u8hwjizo3ls+VG9q/rlXr9XAr+DsUie+CnlXtC0Z4crktq3sxK2U/l3hlnK8RaIg+C1RfCQo4rE7nTT/Rc2SbT4vbZ8rRwzHzsEEMVJHbYlkqQ1o6I8Ygsybp4NV9kfQhS8kKI09t3MupV9KRiQAsN1jXuR1ooVKuTWKtb1D4YlkSWPEzyoXhxW4Lns40HW9ohv968FCqJRdDvYQMZPS2WuOI1c2cclFMg8MuObxZW+9z9u3ECgwAtp8eYelRHpnp/xqRksFVXze4H5Y7FbqPGAXjUj/+lMvrfGuiUGYfxwd1f4ELhf/9vU1/UTfkzvBQ3D5RbNn9U0it+fQ6RjUnNgGe3XHsIEoF1Ge2+jPLj9K3z9pgPOLIBnTQRWcK82Y1Te4nkfEQM/q0eg9vMz3SRUKxf3mAYGemEv5v1FKdnTf3YHQpBKd2Ss1VZzRNug6x7D02ldW6Ly/Zj+hCn6RptjrJal3v/CANX9IAxAsL/FSNy7tJgmIwwTZEEVAk2t2VaCTxH5qy6Eh44E08YhSCGjezGVNTxWrpuzbw3lhCqUlfmC1hB+FDb037/E+n6s/88LqyDaF4bQuVq/8stLQnVz1zfOz0veg+zu6pnNAgFU7sWZZvbMmrq74lw/5XV97GT7rDxd0BLgSdxbvHlQeFuQRhwCTG9m+yfwX8DkE+P72mZaXITOwWJX3qLFmKHgGA36oqLU6PV0S01Xwj0PlU7Dm8TaFtGroC4A0ebDz4p66JdhvRbrKjdkVKGzjOZkLWXHOBJLGNA2mzPB7LR0V9jaWG9/Ajx01za9PE/DN+lkKtAovOmrK5G5Sz0AXdDa4HMtx/aRu9ozirrsua6KiCrDd5VLBglcngO2aC49cze027O5m3zRF3Jra+GVad91pi+EIcliewSeRFICeMTN3ISrbwqRxgvsmp3p3Uw8HlIhFdW2NcuENTSWKKy4bQASMxis23rkydTrzd2NkXELPfCk3xKw4pYEZkSpALueZksAv0Gov3Yp/bbYgphCO9vHfkOpIZU7FAOSMYwwyVR0JC6gQIWaVDFMOxKkKEKNchBbfGdIBty8j0PTBxI392rKKr4JfTdgVkzGApCV2wIjlux+U+5XC0PPsvEjaxqV0EvhOLfHp8xnXgrO+ccvXZcEm5xpvbUj9ECqzSGEyqYT9k+k1kRiS9pAAjTN9aObdEU9i+fIJVAKR+A68zEd4MI0GcJeFbeGTGcwMO10NfjMASIXq+64Uj8KhLrVJLRzUEjS3hDWDvAvLrac75VXwj8UTCyoiA/WBLlpmEBECRShoBiRP13oyb1N5ym1ms69pndZNu0ci1rK8NcsNUP5X+GUiYepV/XzAEel75xdTMmRUqQoS6YkMxuIB4Uu05mM/UtagFIjmYZjl5sygYa6YXXeUVupI2iL4PHn7H4jBuTgCwOA60rjhYjN6pMfFayiNs+rR5WtKLnaPsThv0smnnhsYCUilM5qewtl5vQRxJBWR+frJWc3iSWVwVSREWvk4sW+6xFwieVWpm5iZWeLrDkmvUopzlA65al2YaWih1zUV3CEWmVcFZ9+bvKIAlTr0Ez0LtiOj0p2ZnAGDxjpwMIe4bZM8QOmzGj2CzW4t+4nw5Qzysb4yAIPIZvDcf/pfTUzFPheP3m1eVQvm5kLyqhkihcH5M6MmZOyI3bBBTjyNJKYTEf7V1Y5S6wIO3tiQbcr1lp26mhEOcw3RJRp9UDUXdo2GT3bOQxxX52y64+N1vej8VGvRix4/IkNHcGn6p37CtEqNl9UQRej79qDHZhtU5IOdXssUqo2KDeMLXW6HISxfcG+hXEqBaTt5ifVEUyedgJKynFg9VaLBw20awvYVv1xhJuZWIIK0HD0/XPUnM9D5gZbWS8fzx1gPrroaC2OEFhk0BCR768JP/VCnoEiCDrFtcnaOEE/WC51RWz3kv/YEiHfvHW7HydbhQ7MmHisQDld8ALyP6xlww8mPy56PFWWtcwS7wpU/BNikJ6hfv6llWK15YxzGEzOYWhhMNGU7mXWcQfXFnJmwu2XtHsoGthdl5tBJezJxchF96ppQYtcEPZphq2Reo1LJ9s5SRPmDU8jM1tFl0QQPo80wJcFPfRMYAOB4Ic3nPfxXIR/sd2+HxpRHyaBQVsEW7mSk+hwouJ8TqYwRIZHAvEI5IMwjP5nRm6Fff+Bds6L5V0eIdlzT7b/sEEdggPTEk1t/0lPN7oP4YyI+CJL+MfndNyUv3nOvH/0VVnMMdrHJFek7vdkeXV454mH2v6BOk1WAvRUE/LAwLou5nVedbgMgagOvCu9u2djVahkJ+QQkPCJzF26+x5euWGix8/TfVS9M0g1ugQIF9zchpslQaLDQAaPAZO1c8SM9ZAcdz3ih6upEgE0CMAtLYEdQByoZK7asV/2KaPlejs7tgtXhqQREsThmnkIg8pOyuqfI3IWt4eWz0vWX8w+J1gieL1K1abfsGOMmI0WzhdqCAhXmiGOWt4o+hcPwWnmZXAVjubEZBkCcroUYK3mwa66gJRkEisdCBaJytShYd7BRS+rlOYMC9CMi+xlh+4EJy2aXiOl2NDOE5CLIT5IU18h08Yt8uVARLEmP/v6r/WkJFPzCsOW4e0772Zk8E/rO1edFHUSa8SbYgJc1+sWxaBU9ItWXdOBwWHn+x94tF4sve/Y5JbDsKyBHl00xZqR5XwRwpxBN+t/gkxvGOMXQ0ZJGTesMC2fBwXmfYcLGbhashVV5+a7ejJslg9DU4HFBmgvQq/Hf36BNDZSmQyxu0I8b827jOnm42dAflo8HlXn4vPjUv/xLU/jj3B6ssJFN63szaM9sSCRTfxud56DC2c0q/r17Z3Frmv6s7r3xpI/yfsIUXA0q5ror0osxZAnM8nFTy216885zJJRkqLRH+FPCHRD8sf/UdROc5mmON5EF4QqmWWlFCOAAgRR03Vp8VA7rFf4SaU7bFQ6fbCltU6Fuql2hNCyPl4Fq+JrwHqfndT/Lp7EVokMKR6BnH1LkfYfQK7+7Tb7AUADY2v2WfhxJi6y4K2a2TMElyV36vnolmkNd/71pOYzU8fsSYmLTANqRXZPbyFha7iDs8CS2XUqJ0e5pnoAmcTd9Ru4qwcpbhmyEbi+0tGhLnbNkXlE08IbwhVeUa1fj0rRL/l82s3g8Cv0hhuCO19rs2yLNqQIPOpPcuOOJz6bLgRyRLrO9TJKgqF/6Zhey9PJe9eCTT2pFYmRukKM5J6RCwQ9eGXHueaeJZM8s4iDRtoeWGKcK2aFXerY/nOXcFLrVMzJO33znlUTQ3UzB763dl42jb50723CTSaH0iqpYFr/5FvoS2Sw2E2UDXceA8LEnqh58WsUFfMwnJF7x/2hVF2f0q8FGrayOsJD7TRdpl29Ms/xmZ4B4sJDzZnX0NHwoTAppo6ouxav5NWbhopa20oH2I/5cldV9F5UVcDv/baafNbXDSG+1mu8d022bWNdDlWCxcI2pkjKjWqwEROhE0I5jnQKvkekdb499ISndw48LraYA+KHV8TGaWUu2nAc6QmvHPWOwoKLEtb0M7/D2j/mqULI5gEmPknVes3VN0XNA2D29b9wwaLgfcuyl8AbVdwtLBgtEW2EIXtuO9FQjCK4Yeght9f/5EYyr1sVQt0M1YibCf7lJRlDZ1J+Y3M4bDAPNTG2Pq+i5HbC08xR0QSLQ/Ymtig7sQ81rveihRMxf6kV5v9lD7uCU8dwdilqj/GzsgL6bkxok8rrbYl2tB1IlDvuavobhLyksjQbeZzSwF79awG6jQ1ow42jdHdc62OcL/Qt+DKtwmGk9Wuy9qAJi5+lZ6P9DAo8qWdATZOj6VOBl8GIrZd3RbaxP5TLZm7yWGFjdcTHsb+npJss8kPIKY4e338ceK0SIXfT/6mo5SHifKYIPDCu+2R2Hg9mE9KqTtK+pDaD6CF7EPLuFRSi52LtDiLIr0k/9x2jvKLF6hJgJ9yTh1+g/Y1S5BlKdT5zz+jVnc5LdTQpdRuNic6PIYtH6r2JrAMG9YX7QbWzto2AAc6wa28ZJ98RYr5e3r1HxPiPdz+lY1GQiw5oXf+GWwphnMsE5HzrPsC2G02APlIw5cV8+r09Ar1WU8wDUBJxTKEX8YMNxbQX9y6f8K7ez8YAsDGnzQQosC0cyysbl/XyegkQlVS1iRfqhvTbaDNNIvHPM9prNdNyJo8pgIpBnGZFUf0CWXi84Zb0FmRxN7FviTb8e7mdUDKBLeulaFLTB2AHC7FaNowrIxMFjmvAiKHfxqxfoWC1Aj6e+oENrHO24IhyaxN0k2emN/igOZC5IV+6oHVKDKzJcmy4GvrQOkFqtgVyeUheYw3BaappMx/Nys4o7b0K+1zGTb43PwSPgo1Nxtko97IeT6Qb5Xpr3Z1+9mRXqNKMZQfJZKQZQA1iy4pcbp5N260bBK6HUk58G9LjopzQI5Btw/yMqY+jIRcrsCWuEL+Pe79w7sQF6qLkulwH6WlCaWoggO93w/ZJP5Gw2f0jBhGKXP/xmCE1tRxLjuP7YQfMk+sv71TY89l9OywmvuoZdegGr4fj+GOCJlS5L4FIgxbunaZXQuXrbe2yXc98mKyEk2XzGUdSXS/SZceEa8eZLN6qkrMBAbM1UC5zP9eIVPKRQUslxp6hss1OHYX9fnEPTz4gktHvEdAA1wTwlcRrgVW2DVhPXqg4Ik8BK0Z0qdbgvnFR8uk3XAhN5axkr+hVeuqdro4q2UgZsAbSVEod1DRSbAsjnglZwaWgEh6nRGdSbkCfQQSRqWrV5l4uapggOVNGWKeGKYlMnKLPAGA4/K8bbjpbAksi/q33qMhB9ttPZvhRajjDRjbO01HDpcfyxFtod/sZ/4mEEzZUZ/hgfC1i6E6DSyxFncRyYg+xqHs7VOzVh1wCR+WKY4CPoa5TQ05P3wT6nv9LJYdRCOBBia8FgcJhvgOztwb4F7gUNiYYzh51eDIQxrOtUJr7dTAgOplLyZ2SZ2lvEsGruL4Q8425pwySv7MdLKpFAn60R9BlXZJ+R4ergmSwP3bxvJJibS2QkioqAFAax0BuI9PULi4w5XQ/TNF7Iy3aMCE5YmRrfld/fjN+/vT0Mpsv7p7B79rUIZ9eRSstC24ygBX321bXtePYDPjzcxXVs9aTyxB0aGpd3CXGuNV2uXk86Q4ShHg4/Phsh0JXrHVq7b8coy0QroAue+AIZUIs5lR2QugXRVwNzPPu93S80L6ZOQake6RKKGaHXzZwYp21Iuzhr7c0UikUZX9mdH/RMkpA6CGUaXXHxvPB0zgSSzU68NIrcJr4RcTQoSPyMm/tYDdrJvaTHx5EfG1sFM2dRqz5olatbxQpe1q/0Rw2oVKn8vg3JiS3Jk9XukhhtIzsOWuITzi9MaSWxVCegeW3HkOwBfjyRfR0yak+f0dlRgnUn5C2s8OGf3lSeb9SysAMUWDbT9XiVPXqK+t/DI3RZxKjhabhQNLqfe07gsy1/qFlPnsd/+OcE9CjpwybbgTJuJ59fGE7XFvbfTHxjTcyZ3btunZGwSywqIJfxY0nTiR0awqB0ObX23b4iYtM4vBuTeYQ0rixzfBJPQSnjTxFJP0bXjm66h6pomQSD4gQ4X65RhEdnlKgMk4TGLyr2/x2loabYivmEbOANdZAtY+3swAh2fx7BGraaenajlYDCiKqtf87RJO5IkDcLk5+ionmRytluOi7X7KhjEc5RonK/8sb1X8EFyiSGImMMSv34VQkfnVf1mlDoLpz/92EYlyNlWjDvMYzHboSFVGC0tIWp5hYpm+2of9GLVPPptP8IJvMIkg3PoEkRRprWKx5g73/rqLA6uwWUfUVCRfi0e3Gd9JpPBplK6Kd126+m6XzIhL8Nzd0P6QJJmQnHwx6+8VgVukp1QOt00YUdQktJ17iBJzn+lRlpeKsX6QikYELmMzXg4zB4IyjBclpqvtyEr0uhla0FX7bZDcltSB8OfvmQEPNx0eGnDDiyHi2kbGodVQI1xrOTku5XswVA5N81eNQxTs3vgx8cX6k9jtkayZc2cTP7kh4NvHklAQHhddIH2UoasjcPytYk0YlWyT5UDCpqdbI0prOwejk0doUVMtkwIzHlZ9ZQV4mexhLqlBqegI+qzGw7zjB6szsX5qn0G7ZipAgudIs4j+5FltW4jaECRH5yILCbmL1p4nWxRz3UOo83A70cWkBlfP7UQ6sL0+ty1uRxLi+OwqE9FK9DmCAIKsOFOqW5EmbOrc5BPJ/91vfDUx94lZKtFSV3lEcv9r1ooAQeIfWdeeEuZ6zVFYsWiWKiu0S1rV+792oSyVZ9KfKtipFpTzZygAm/Y+C3eoXdr+WRuOxysA7qn+SVJWBLToOQa+jWSXpAg2J4tI4CkXhM9NUFx9AlTEIjq3rebGefb+9PGzZ119ueXDP/jWAo0p/6ljbhRgi1KBAqY8nrWdf8UWAM/lgiHFkF7Wj93iuv+XnjEakzbo65VL1XWcfpMz9s+jbKU11tzKcNCHKOTdK2GQGs2FPYANCrUrAmc5fwMkaT8jHvd0CCjmS2P/B7B75xFzDNtpuIXQMRcOaNC6PErycipT+hSWxFGuQ5FTF9abPEWPWQ81W5GYZcsPCf/Hxi6oLxrBCGxVdPW+qSKcKJUMikHssIPfvMen4KwQnYj50obkj+pHXoNNPOoDBy2eM+Ir7ZF4gUI+ibV9SVx37Bw/cZgfLcUtts/YFghdcWgBWRxxpfuiobB6YIUWkqBsusEczzTEZk6LeWVCpgFgKSB/ZQukGXYT7Nv/rWkwOl2ZvVOfJepk+p6RzddY67V730uONRVcGr9OH5JXJmBzCn/4iHdvNNIVV8WhomhkVsUYeyioGv0+1iIwPYw3eyNiy62j/k5spHXA1vXQ9vOCX8imi51fkUD9iWIEUyei2uE3Bjl7dWuYUnhHfs6QhvLp+FgOPH9dpqzNW69PmOwu0+2YmJQzVfu54Jex23uPEzFm4M6cvzQ2yiXQyLCK6f8OVy1MVOxVMAVOTIJdZnDVJnDHB7Y3SB0i4AYPcYRODwAO+nasM1oYC5gv0UKunzlaRztMWvSVig++1bcgXq1gqqCq3fCyE/rcJAT0Mp6qYDW/pHxFHdL0sqnsX8rdMOJoVOTK6EEhSHpfyjbu7fLblPdga4KSDjhSkOUU56FnLNGNHm4efRW1j4KI1IPfRB3oLiBfeaQ0jBq8riwzl/1SwQCmZ761I+qxqWsVcaQKLbKA5KmODKB8UpMsP81vZuAlq4HSzX2WrN3Yjcd5l9YcLeKZbe+1ronlt4n3zVHQRXkanx2drLGOCUGaqczyH5OQcxUknZB7wvEE8TrrwyNWgQkoG3Usya/GRGQYwK1+l6jHmakTEg3i1hlVoM7xOCZN+MYzb4y9x7lZY14IxYBdQCtqpimhq+QVLIJDO8/Y0vwOO6AIHsl0xHphK3FY4JMP89QMf+/mGIl+G4L2q44w30+rwulUprAJXTD4U4YHOgNWi+EnogioS2TEmMl5iTqKDFahqtwlTq9hPh0sWvCkjbaCNPMG0OyxC5ggUQksZzoJoq0GPaauSDsddM2pi6Lgr6oHqKpWjA+wDPW7buc2PnqsC5NsDCrnePRDm25PFH+VYJEzCjeduPW3qhJGmx/zkZPCYPr6y1nH3xlTptNd6ddpdVDLtfaqFqSHfo1J5c8CIb+CTebjeBfxd+vvAxIPPKDE9d4/8Jedj17teRb1EAlrdMUlT7o5qa8DN6B424Ge30kAq+Unrt93ln5vaKM5l6vuU6Gnh9fQgfStdN7UMus3/+K7Qwp+CCt0bC77naAKjS74Kzd56JdAQtxT+kqkNs6LK+zYqQSzPTPfDFbonUSdR7Hpf3UQuG7mZICiP9tRAvZsXr0xtunhTdnbUiXTqm3Mo//vOxzwk7O+lsDMVmsIuRQPESn7F+BQMFinLtzzlef6GxCsrRedI0z20jtA9mavRIJv1ucXy+EpjljiGmd7glxugDeCqFo1qV4gf2eNgygpfO9Wkg6ZHHjatfLSfGLLMtsQtEggw/ISVYmYTP4aW2UAmJI0/OyhzCYwvAOo/4dNnh7WXwCi6/8y05hotEojkQZ2enx6Tk/jUe8A5UHnZA1D9AMrDicOT7/xsYbWe9V1I+JE5WxylB2pJwjUszixsLHDwePeo5R8zSwAgwIZSnvW8x04gPzclNAbKPxLdpE0DKy/H10Q3YQSdDDZw5fX4HljAArij//8hUZuiaJ9Lh9mtBPgIWSXUeqmQoBBxeIP9SargUmf2mXG9fSEI4s9RdDeGTAYZP8jZZv5k2/3KelZlteB8hH9RuJHs3AoUspqUAQ0RfdpBnf6bCEChLcmyUZ2ineP/IqI5L8W61XRqrJ2yQ/Fydc8fWwBzAVlRMOuglMxOYPnPNPCMr+Pm/3xFRZRmjUiai3arTTYveIOp3BcubjLaVBtp/AoaZv+RxkhRLZVnILqpOY2xiOitSn8cAm/QB+7AbceX4E34oT1H6BGKev3kEEefIkEOoH5f086ixAuP0eyS8uxre2Rjuka7LCURq5UG+3okk1vaPBXgog4PFFdPyCqB4rdGOyQob9YY4khn5OH5sUjOuvIkjkbhw0ickdkTUlT3xvya9Tl9iwYfDnJ3QR1yK3gaNE1sdRz51gQJ/EOXC3ce7qgf15ig2veEgsRBMN16bA8l5QYiPUS7JE/o5oKTHy4vE6IrA7yLEa3MGoMxKtBVLqSHRfOpJPUBpQXcomcnytHtur5YFd1oxSY8EVjDP/btVssAIMnfjZP6FYDnc5yBTH0ATT6qUYrLN3Dva+mHySBN2kDoZivA4YnJ4Lum+dB83q6KRNomvL3AISJbB4T/Vz0mj7dGohPAOTlWuaesgQxrZtjZbo0qgSjgl51B164OL9efCcgTJk4+3HwUHLOGqMf9e6gyeofin2MS3FCfkctlQftR97dp+ZXfG0YQbIokP+/ozhMOkmokIlIn0/MJ9MpV+qKvnrclzk3wy+yTBZCVY8RU9FQHAyxDtK/Su5uoPJeInlm0Mi7SSTre7iMp9J04mp16te4sJvkLiStVcXJod9x4rUQ/02VXGvxifCJ+9/dRYv3MCWbqrJw+f9SGEFVKIHHb89KlExL9/BDzhyDHdKnnvFVjX1VTw4nI7Lm/4rlTsx+4HEJ82xgo8z5evNPFQxs38gZR3bHWfxsb5p28lplkch5NFiO0vvlLZuRsHOBDZJCN9DHpNwpBKhNL/WUGoId5O1cy/XbmIqJqA4GOZ9RO+EaYQO52Vnve40+dH/owsbersIhh96D8i6rpPtAQI1egs76S6e2OUOmFVAj/JplKUcDMszu3UO63kMe/kozwLhVTmlMDUVeZm9FE1TXqEZSbEmGBN5ybf6x4NFe73fBo9YZTHsH9Uz5GB+PYqAz+sxoR53ZcLoZ7rDDVRLuK5mkYcpOVtUWIE1xfn5zgPIbKZINMIZY1USyptASd+10LimFK4nweCwZh3IzLeqogRNp1nJZaXrjWwwGKXYrUn+ceIFryiXIC9Y4Jv0X0Fl7Y4TFh9O+IlvvWUMu8HKcO+Q//n1fck=")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index af26da4..c48632a 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1098,7 +1098,7 @@ hprose.global = ( * * * hprose Future for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Nov 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1399,6 +1399,11 @@ hprose.global = ( var args = Array.slice(arguments, 1); gen = gen.apply(thisArg, args); } + + if (!gen || typeof gen.next !== 'function') { + return toPromise(gen); + } + var future = new Future(); function onFulfilled(res) { @@ -1415,7 +1420,7 @@ hprose.global = ( next(gen['throw'](err)); } catch (e) { - return future.reject(e); + future.reject(e); } } @@ -1430,9 +1435,6 @@ hprose.global = ( } } - if (!gen || typeof gen.next !== 'function') { - return future.resolve(gen); - } onFulfilled(); return future; diff --git a/src/Future.js b/src/Future.js index 8b5754d..0a43d59 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Nov 23, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -314,6 +314,11 @@ var args = Array.slice(arguments, 1); gen = gen.apply(thisArg, args); } + + if (!gen || typeof gen.next !== 'function') { + return toPromise(gen); + } + var future = new Future(); function onFulfilled(res) { @@ -330,7 +335,7 @@ next(gen['throw'](err)); } catch (e) { - return future.reject(e); + future.reject(e); } } @@ -345,9 +350,6 @@ } } - if (!gen || typeof gen.next !== 'function') { - return future.resolve(gen); - } onFulfilled(); return future; diff --git a/test/test.html b/test/test.html new file mode 100644 index 0000000..c33c83a --- /dev/null +++ b/test/test.html @@ -0,0 +1,19 @@ + + + + + hprose test + + + + + + + From 8ccb9cffea239d99f136187dc92cc403ea471b61 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 24 Nov 2016 23:09:43 +0800 Subject: [PATCH 66/86] Improved Future --- dist/hprose-html5.js | 6 +-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 103 +++++++++++++++++---------------------- src/Future.js | 103 +++++++++++++++++---------------------- 4 files changed, 92 insertions(+), 122 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 9e2bb81..b88dda1 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}});var t=this;"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return"function"==typeof e.then}function a(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function u(e){var t=new n;return t.reject(e),t}function s(e){var t=new n;return t.resolve(e),t}function c(e){try{var t=e();return s(t)}catch(e){return u(e)}}function f(e){var t=new n;return e(t.resolve,t.reject),t}function l(e){var t=0;return Array.forEach(e,function(){++t}),t}function h(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){S(e).then(function(e){i[t]=e,0===--r&&o.resolve(i)},o.reject)}),o})}function p(){return h(arguments)}function v(e){return e=o(e)?e:s(e),e.then(function(e){var t=new n;return Array.forEach(e,function(e){S(e).fill(t)}),t})}function g(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),o=new n;return Array.forEach(e,function(e,t){S(e).then(o.resolve,function(e){i[t]=e,0===--r&&o.reject(i)})}),o})}function y(e){return e=o(e)?e:s(e),e.then(function(e){var t=e.length,r=l(e),i=new Array(t);if(0===r)return s(i);var o=new n;return Array.forEach(e,function(e,t){var n=S(e);n.whenComplete(function(){i[t]=n.inspect(),0===--r&&o.resolve(i)})}),o})}function d(e){var t=function(){return this}(),r=Array.slice(arguments,1);return h(r).then(function(r){return e.apply(t,r)})}function w(e,t){var r=Array.slice(arguments,2);return h(r).then(function(r){return e.apply(t,r)})}function m(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function b(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||m(t.prototype))}function T(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?Array.slice(arguments,1):Array.slice(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function _(e){if(b(e)||m(e))return E(e);var t=function(){return this}(),r=new n;return e.call(t,T(r)),r}function j(e){return function(){var t=Array.slice(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function O(e){return function(){var t=Array.slice(arguments,0),r=new n;t.push(T(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return e?o(e)?e:b(e)||m(e)?E(e):s(e):s(e)}function E(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?_(e.value):S(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=Array.slice(arguments,1);e=e.apply(o,a)}if(!e||"function"!=typeof e.next)return S(e);var u=new n;return t(),u}function B(e,t){return function(){return t=t||this,h(arguments).then(function(r){var n=e.apply(t,r);return b(n)||m(n)?E.call(t,n):n})}}function A(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.forEach(t,r)})}function k(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.every(t,r)})}function C(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.some(t,r)})}function I(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.map(t,r)})}function R(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduce(t,r)})}):h(e).then(function(e){return e.reduce(t)})}function P(e,t,r){return arguments.length>2?h(e).then(function(e){return o(r)||(r=s(r)),r.then(function(r){return e.reduceRight(t,r)})}):h(e).then(function(e){return e.reduceRight(t)})}function M(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.indexOf(t,r)})})}function U(e,t,n){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function L(e,t,r){return h(e).then(function(e){return o(t)||(t=s(t)),t.then(function(t){return e.includes(t,r)})})}function N(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.find(t,r)})}function F(e,t,r){return r=r||function(){return this}(),h(e).then(function(e){return e.findIndex(t,r)})}function W(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function D(e,t,r){e?W(e,t,r):t.resolve(r)}function z(e,t,r){e?W(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==G}}})}function H(e){n.call(this),e(this.resolve,this.reject)}var G=0,Q=1,Y=2,J="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,X=t.TimeoutError;Object.defineProperties(n,{delayed:{value:a},error:{value:u},sync:{value:c},value:{value:s},all:{value:h},race:{value:v},resolve:{value:s},reject:{value:u},promise:{value:f},isFuture:{value:i},isPromise:{value:o},toPromise:{value:S},join:{value:p},any:{value:g},settle:{value:y},attempt:{value:d},run:{value:w},thunkify:{value:j},promisify:{value:O},co:{value:E},wrap:{value:B},forEach:{value:A},every:{value:k},some:{value:C},filter:{value:I},map:{value:x},reduce:{value:R},reduceRight:{value:P},indexOf:{value:M},lastIndexOf:{value:U},includes:{value:L},find:{value:N},findIndex:{value:F}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:G,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===G){this._state=Q,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();D(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===G){this._state=Y,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Q?D(e,r,this._value):this._state===Y?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case G:return{state:"pending"};case Q:return{state:"fulfilled",value:this._value};case Y:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new X("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=Array.slice(arguments,1);return this.then(function(r){return h(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=Array.slice(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=Array.slice(arguments);return r.then(function(r){return h(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?R(this,e,t):R(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?P(this,e,t):P(this,e)}},indexOf:{value:function(e,t){return M(this,e,t)}},lastIndexOf:{value:function(e,t){return U(this,e,t)}},includes:{value:function(e,t){return L(this,e,t)}},find:{value:function(e,t){return N(this,e,t)}},findIndex:{value:function(e,t){return F(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=O,e.co=E,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=s,e.rejected=u,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},J||(H.prototype=Object.create(n.prototype),H.prototype.constructor=n,Object.defineProperties(H,{all:{value:h},race:{value:v},resolve:{value:s},reject:{value:u}}),t.Promise=H)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{ -value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else p.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),v&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f; -})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?p(e,r):l(e,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,p="undefined"!=typeof h,v=!l&&p&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:y}})}function c(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===S){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),u=y.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),E}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&K(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return V(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function j(e){if(T(e)||b(e))return B(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function O(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function S(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function E(e){return T(e)||b(e)?B(e):o(e)}function B(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?j(e.value):E(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=te.call(arguments,1);e=e.apply(o,a)}if(!e||"function"!=typeof e.next)return E(e);var u=new n;return t(),u}function A(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?B.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){K(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function z(e,t,r){e?D(e,t,r):t.resolve(r)}function q(e,t,r){e?D(e,t,r):t.reject(r)}function H(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,$="Promise"in t,K=t.setImmediate,V=t.setTimeout,X=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;B.wrap=A,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:E},join:{value:v},any:{value:y},settle:{value:d},attempt:{value:w},run:{value:m},thunkify:{value:O},promisify:{value:S},co:{value:B},wrap:{value:A},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:x},map:{value:R},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();z(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();q(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?z(e,r,this._value):this._state===J?q(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){K(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=V(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){X(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){V(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=O,e.promisify=S,e.co=B,e.co.wrap=e.wrap=A,e.Completer=H,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},$||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ +TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else p.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),v&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{ +var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?p(e,r):l(e,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,p="undefined"!=typeof h,v=!l&&p&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:y}})}function c(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===S){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),u=y.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),E}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 08a7b40..6843439 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index c48632a..37a2d0f 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1098,7 +1098,7 @@ hprose.global = ( * * * hprose Future for HTML5. * * * - * LastModified: Nov 23, 2016 * + * LastModified: Nov 24, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1116,13 +1116,16 @@ hprose.global = ( var clearTimeout = global.clearTimeout; var TimeoutError = global.TimeoutError; + var foreach = Array.prototype.forEach; + var slice = Array.prototype.slice; + function Future(computation) { + var self = this; Object.defineProperties(this, { _subscribers: { value: [] }, resolve: { value: this.resolve.bind(this) }, reject: { value: this.reject.bind(this) } }); - var self = this; if (typeof computation === 'function') { setImmediate(function() { try { @@ -1139,6 +1142,10 @@ hprose.global = ( return obj instanceof Future; } + function toFuture(obj) { + return isFuture(obj) ? obj : value(obj); + } + function isPromise(obj) { return 'function' === typeof obj.then; } @@ -1189,20 +1196,19 @@ hprose.global = ( function arraysize(array) { var size = 0; - Array.forEach(array, function() { ++size; }); + foreach.call(array, function() { ++size; }); return size; } function all(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { + return toFuture(array).then(function(array) { var n = array.length; var count = arraysize(array); var result = new Array(n); - if (count === 0) { return value(result); } + if (count === 0) { return result; } var future = new Future(); - Array.forEach(array, function(element, index) { - toPromise(element).then(function(value) { + foreach.call(array, function(element, index) { + toFuture(element).then(function(value) { result[index] = value; if (--count === 0) { future.resolve(result); @@ -1219,19 +1225,17 @@ hprose.global = ( } function race(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { + return toFuture(array).then(function(array) { var future = new Future(); - Array.forEach(array, function(element) { - toPromise(element).fill(future); + foreach.call(array, function(element) { + toFuture(element).fill(future); }); return future; }); } function any(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { + return toFuture(array).then(function(array) { var n = array.length; var count = arraysize(array); if (count === 0) { @@ -1239,8 +1243,8 @@ hprose.global = ( } var reasons = new Array(n); var future = new Future(); - Array.forEach(array, function(element, index) { - toPromise(element).then(future.resolve, function(e) { + foreach.call(array, function(element, index) { + toFuture(element).then(future.resolve, function(e) { reasons[index] = e; if (--count === 0) { future.reject(reasons); @@ -1252,16 +1256,15 @@ hprose.global = ( } function settle(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { + return toFuture(array).then(function(array) { var n = array.length; var count = arraysize(array); var result = new Array(n); - if (count === 0) { return value(result); } + if (count === 0) { return result; } var future = new Future(); - Array.forEach(array, function(element, index) { - var f = toPromise(element); - f.whenComplete(function() { + foreach.call(array, function(element, index) { + var f = toFuture(element); + f.complete(function() { result[index] = f.inspect(); if (--count === 0) { future.resolve(result); @@ -1274,14 +1277,14 @@ hprose.global = ( function attempt(handler/*, arg1, arg2, ... */) { var thisArg = (function() { return this; })(); - var args = Array.slice(arguments, 1); + var args = slice.call(arguments, 1); return all(args).then(function(args) { return handler.apply(thisArg, args); }); } function run(handler, thisArg/*, arg1, arg2, ... */) { - var args = Array.slice(arguments, 2); + var args = slice.call(arguments, 2); return all(args).then(function(args) { return handler.apply(thisArg, args); }); @@ -1318,10 +1321,10 @@ hprose.global = ( return future.resolve(err); } if (err === null || err === undefined) { - res = Array.slice(arguments, 1); + res = slice.call(arguments, 1); } else { - res = Array.slice(arguments, 0); + res = slice.call(arguments, 0); } if (res.length == 1) { future.resolve(res[0]); @@ -1344,7 +1347,7 @@ hprose.global = ( function thunkify(fn) { return function() { - var args = Array.slice(arguments, 0); + var args = slice.call(arguments, 0); var thisArg = this; var results = new Future(); args.push(function() { @@ -1367,7 +1370,7 @@ hprose.global = ( function promisify(fn) { return function() { - var args = Array.slice(arguments, 0); + var args = slice.call(arguments, 0); var future = new Future(); args.push(getThunkCallback(future)); try { @@ -1381,22 +1384,16 @@ hprose.global = ( } function toPromise(obj) { - if (!obj) { - return value(obj); - } - if (isPromise(obj)) { - return obj; - } if (isGeneratorFunction(obj) || isGenerator(obj)) { return co(obj); } - return value(obj); + return toFuture(obj); } function co(gen) { var thisArg = (function() { return this; })(); if (typeof gen === 'function') { - var args = Array.slice(arguments, 1); + var args = slice.call(arguments, 1); gen = gen.apply(thisArg, args); } @@ -1453,6 +1450,8 @@ hprose.global = ( }; } + co.wrap = wrap; + function forEach(array, callback, thisArg) { thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { @@ -1491,10 +1490,7 @@ hprose.global = ( function reduce(array, callback, initialValue) { if (arguments.length > 2) { return all(array).then(function(array) { - if (!isPromise(initialValue)) { - initialValue = value(initialValue); - } - return initialValue.then(function(value) { + return toFuture(initialValue).then(function(value) { return array.reduce(callback, value); }); }); @@ -1507,10 +1503,7 @@ hprose.global = ( function reduceRight(array, callback, initialValue) { if (arguments.length > 2) { return all(array).then(function(array) { - if (!isPromise(initialValue)) { - initialValue = value(initialValue); - } - return initialValue.then(function(value) { + return toFuture(initialValue).then(function(value) { return array.reduceRight(callback, value); }); }); @@ -1522,10 +1515,7 @@ hprose.global = ( function indexOf(array, searchElement, fromIndex) { return all(array).then(function(array) { - if (!isPromise(searchElement)) { - searchElement = value(searchElement); - } - return searchElement.then(function(searchElement) { + return toFuture(searchElement).then(function(searchElement) { return array.indexOf(searchElement, fromIndex); }); }); @@ -1533,10 +1523,7 @@ hprose.global = ( function lastIndexOf(array, searchElement, fromIndex) { return all(array).then(function(array) { - if (!isPromise(searchElement)) { - searchElement = value(searchElement); - } - return searchElement.then(function(searchElement) { + return toFuture(searchElement).then(function(searchElement) { if (fromIndex === undefined) { fromIndex = array.length - 1; } @@ -1547,10 +1534,7 @@ hprose.global = ( function includes(array, searchElement, fromIndex) { return all(array).then(function(array) { - if (!isPromise(searchElement)) { - searchElement = value(searchElement); - } - return searchElement.then(function(searchElement) { + return toFuture(searchElement).then(function(searchElement) { return array.includes(searchElement, fromIndex); }); }); @@ -1584,6 +1568,7 @@ hprose.global = ( // extended methods promise: { value: promise }, isFuture: { value: isFuture }, + toFuture: { value: toFuture }, isPromise: { value: isPromise }, toPromise: { value: toPromise }, join: { value: join }, @@ -1828,7 +1813,7 @@ hprose.global = ( }); } }, call: { value: function(method) { - var args = Array.slice(arguments, 1); + var args = slice.call(arguments, 1); return this.then(function(result) { return all(args).then(function(args) { return result[method].apply(result, args); @@ -1836,7 +1821,7 @@ hprose.global = ( }); } }, bind: { value: function(method) { - var bindargs = Array.slice(arguments); + var bindargs = slice.call(arguments); if (Array.isArray(method)) { for (var i = 0, n = method.length; i < n; ++i) { bindargs[0] = method[i]; @@ -1847,7 +1832,7 @@ hprose.global = ( bindargs.shift(); var self = this; Object.defineProperty(this, method, { value: function() { - var args = Array.slice(arguments); + var args = slice.call(arguments); return self.then(function(result) { return all(bindargs.concat(args)).then(function(args) { return result[method].apply(result, args); diff --git a/src/Future.js b/src/Future.js index 0a43d59..d3db0e4 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Nov 23, 2016 * + * LastModified: Nov 24, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -31,13 +31,16 @@ var clearTimeout = global.clearTimeout; var TimeoutError = global.TimeoutError; + var foreach = Array.prototype.forEach; + var slice = Array.prototype.slice; + function Future(computation) { + var self = this; Object.defineProperties(this, { _subscribers: { value: [] }, resolve: { value: this.resolve.bind(this) }, reject: { value: this.reject.bind(this) } }); - var self = this; if (typeof computation === 'function') { setImmediate(function() { try { @@ -54,6 +57,10 @@ return obj instanceof Future; } + function toFuture(obj) { + return isFuture(obj) ? obj : value(obj); + } + function isPromise(obj) { return 'function' === typeof obj.then; } @@ -104,20 +111,19 @@ function arraysize(array) { var size = 0; - Array.forEach(array, function() { ++size; }); + foreach.call(array, function() { ++size; }); return size; } function all(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { + return toFuture(array).then(function(array) { var n = array.length; var count = arraysize(array); var result = new Array(n); - if (count === 0) { return value(result); } + if (count === 0) { return result; } var future = new Future(); - Array.forEach(array, function(element, index) { - toPromise(element).then(function(value) { + foreach.call(array, function(element, index) { + toFuture(element).then(function(value) { result[index] = value; if (--count === 0) { future.resolve(result); @@ -134,19 +140,17 @@ } function race(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { + return toFuture(array).then(function(array) { var future = new Future(); - Array.forEach(array, function(element) { - toPromise(element).fill(future); + foreach.call(array, function(element) { + toFuture(element).fill(future); }); return future; }); } function any(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { + return toFuture(array).then(function(array) { var n = array.length; var count = arraysize(array); if (count === 0) { @@ -154,8 +158,8 @@ } var reasons = new Array(n); var future = new Future(); - Array.forEach(array, function(element, index) { - toPromise(element).then(future.resolve, function(e) { + foreach.call(array, function(element, index) { + toFuture(element).then(future.resolve, function(e) { reasons[index] = e; if (--count === 0) { future.reject(reasons); @@ -167,16 +171,15 @@ } function settle(array) { - array = isPromise(array) ? array : value(array); - return array.then(function(array) { + return toFuture(array).then(function(array) { var n = array.length; var count = arraysize(array); var result = new Array(n); - if (count === 0) { return value(result); } + if (count === 0) { return result; } var future = new Future(); - Array.forEach(array, function(element, index) { - var f = toPromise(element); - f.whenComplete(function() { + foreach.call(array, function(element, index) { + var f = toFuture(element); + f.complete(function() { result[index] = f.inspect(); if (--count === 0) { future.resolve(result); @@ -189,14 +192,14 @@ function attempt(handler/*, arg1, arg2, ... */) { var thisArg = (function() { return this; })(); - var args = Array.slice(arguments, 1); + var args = slice.call(arguments, 1); return all(args).then(function(args) { return handler.apply(thisArg, args); }); } function run(handler, thisArg/*, arg1, arg2, ... */) { - var args = Array.slice(arguments, 2); + var args = slice.call(arguments, 2); return all(args).then(function(args) { return handler.apply(thisArg, args); }); @@ -233,10 +236,10 @@ return future.resolve(err); } if (err === null || err === undefined) { - res = Array.slice(arguments, 1); + res = slice.call(arguments, 1); } else { - res = Array.slice(arguments, 0); + res = slice.call(arguments, 0); } if (res.length == 1) { future.resolve(res[0]); @@ -259,7 +262,7 @@ function thunkify(fn) { return function() { - var args = Array.slice(arguments, 0); + var args = slice.call(arguments, 0); var thisArg = this; var results = new Future(); args.push(function() { @@ -282,7 +285,7 @@ function promisify(fn) { return function() { - var args = Array.slice(arguments, 0); + var args = slice.call(arguments, 0); var future = new Future(); args.push(getThunkCallback(future)); try { @@ -296,22 +299,16 @@ } function toPromise(obj) { - if (!obj) { - return value(obj); - } - if (isPromise(obj)) { - return obj; - } if (isGeneratorFunction(obj) || isGenerator(obj)) { return co(obj); } - return value(obj); + return toFuture(obj); } function co(gen) { var thisArg = (function() { return this; })(); if (typeof gen === 'function') { - var args = Array.slice(arguments, 1); + var args = slice.call(arguments, 1); gen = gen.apply(thisArg, args); } @@ -368,6 +365,8 @@ }; } + co.wrap = wrap; + function forEach(array, callback, thisArg) { thisArg = thisArg || (function() { return this; })(); return all(array).then(function(array) { @@ -406,10 +405,7 @@ function reduce(array, callback, initialValue) { if (arguments.length > 2) { return all(array).then(function(array) { - if (!isPromise(initialValue)) { - initialValue = value(initialValue); - } - return initialValue.then(function(value) { + return toFuture(initialValue).then(function(value) { return array.reduce(callback, value); }); }); @@ -422,10 +418,7 @@ function reduceRight(array, callback, initialValue) { if (arguments.length > 2) { return all(array).then(function(array) { - if (!isPromise(initialValue)) { - initialValue = value(initialValue); - } - return initialValue.then(function(value) { + return toFuture(initialValue).then(function(value) { return array.reduceRight(callback, value); }); }); @@ -437,10 +430,7 @@ function indexOf(array, searchElement, fromIndex) { return all(array).then(function(array) { - if (!isPromise(searchElement)) { - searchElement = value(searchElement); - } - return searchElement.then(function(searchElement) { + return toFuture(searchElement).then(function(searchElement) { return array.indexOf(searchElement, fromIndex); }); }); @@ -448,10 +438,7 @@ function lastIndexOf(array, searchElement, fromIndex) { return all(array).then(function(array) { - if (!isPromise(searchElement)) { - searchElement = value(searchElement); - } - return searchElement.then(function(searchElement) { + return toFuture(searchElement).then(function(searchElement) { if (fromIndex === undefined) { fromIndex = array.length - 1; } @@ -462,10 +449,7 @@ function includes(array, searchElement, fromIndex) { return all(array).then(function(array) { - if (!isPromise(searchElement)) { - searchElement = value(searchElement); - } - return searchElement.then(function(searchElement) { + return toFuture(searchElement).then(function(searchElement) { return array.includes(searchElement, fromIndex); }); }); @@ -499,6 +483,7 @@ // extended methods promise: { value: promise }, isFuture: { value: isFuture }, + toFuture: { value: toFuture }, isPromise: { value: isPromise }, toPromise: { value: toPromise }, join: { value: join }, @@ -743,7 +728,7 @@ }); } }, call: { value: function(method) { - var args = Array.slice(arguments, 1); + var args = slice.call(arguments, 1); return this.then(function(result) { return all(args).then(function(args) { return result[method].apply(result, args); @@ -751,7 +736,7 @@ }); } }, bind: { value: function(method) { - var bindargs = Array.slice(arguments); + var bindargs = slice.call(arguments); if (Array.isArray(method)) { for (var i = 0, n = method.length; i < n; ++i) { bindargs[0] = method[i]; @@ -762,7 +747,7 @@ bindargs.shift(); var self = this; Object.defineProperty(this, method, { value: function() { - var args = Array.slice(arguments); + var args = slice.call(arguments); return self.then(function(result) { return all(bindargs.concat(args)).then(function(args) { return result[method].apply(result, args); From 14ca77db8431293951b3eb166708f8d0c2a9143f Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 24 Nov 2016 23:30:17 +0800 Subject: [PATCH 67/86] Update to v2.0.29 --- bower.json | 2 +- dist/hprose-html5.js | 2 +- dist/hprose-html5.src.js | 2 +- package.json | 2 +- src/CopyRight.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bower.json b/bower.json index 79e1ca1..5d59b43 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.28", + "version": "2.0.29", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index b88dda1..d392296 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.28 +// Hprose for HTML5 v2.0.29 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 37a2d0f..7efb15e 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.28 +// Hprose for HTML5 v2.0.29 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/package.json b/package.json index ea7ce9c..b80048e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hprose-html5", "filename": "hprose-html5.js", - "version": "2.0.28", + "version": "2.0.29", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/andot/hprose", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 7b5b395..5465baa 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.28 +// Hprose for HTML5 v2.0.29 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From 19edebc7b85a4c53684cb29111dfe5413d56808a Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Fri, 2 Dec 2016 22:53:23 +0800 Subject: [PATCH 68/86] Added httpHeader support for http client Renamed env to context Fixed APICloud Http Client --- bower.json | 2 +- dist/hprose-html5.js | 8 +- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 262 +++++++++++++++++++++++++++++++++------ gulpfile.js | 1 + package.json | 51 +++++--- src/CookieManager.js | 120 ++++++++++++++++++ src/CopyRight.js | 2 +- src/HttpClient.js | 95 +++++++++++--- src/TcpClient.js | 34 ++--- src/WebSocketClient.js | 10 +- 11 files changed, 483 insertions(+), 104 deletions(-) create mode 100644 src/CookieManager.js diff --git a/bower.json b/bower.json index 5d59b43..4160d57 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.29", + "version": "2.0.30", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index d392296..30b9f4d 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.29 +// Hprose for HTML5 v2.0.30 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&K(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return V(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function j(e){if(T(e)||b(e))return B(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function O(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function S(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function E(e){return T(e)||b(e)?B(e):o(e)}function B(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?j(e.value):E(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=te.call(arguments,1);e=e.apply(o,a)}if(!e||"function"!=typeof e.next)return E(e);var u=new n;return t(),u}function A(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?B.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){K(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function z(e,t,r){e?D(e,t,r):t.resolve(r)}function q(e,t,r){e?D(e,t,r):t.reject(r)}function H(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,$="Promise"in t,K=t.setImmediate,V=t.setTimeout,X=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;B.wrap=A,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:E},join:{value:v},any:{value:y},settle:{value:d},attempt:{value:w},run:{value:m},thunkify:{value:O},promisify:{value:S},co:{value:B},wrap:{value:A},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:x},map:{value:R},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();z(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();q(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?z(e,r,this._value):this._state===J?q(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){K(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=V(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){X(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){V(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=O,e.promisify=S,e.co=B,e.co.wrap=e.wrap=A,e.Completer=H,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},$||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ -TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=B.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&B.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new O,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?A:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(E.TagNull);switch(t.constructor){case Function:return void i.writeByte(E.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(E.TagEmpty);case 1:return i.writeByte(E.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case O:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case S:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(E.TagLong):r.writeByte(E.TagInteger),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(E.TagNaN):isFinite(t)?(r.writeByte(E.TagDouble),r.writeAsciiString(""+t),r.writeByte(E.TagSemicolon)):(r.writeByte(E.TagInfinity),r.writeByte(t>0?E.TagPos:E.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?E.TagTrue:E.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c)),r.writeByte(E.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))):(r.writeByte(E.TagDate),r.writeAsciiString(n+i+o),r.writeByte(E.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(E.TagPoint),r.writeAsciiString(c))),r.writeByte(E.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(E.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(E.TagPoint),r.writeAsciiString(a)),r.writeByte(E.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(E.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.write(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function y(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(E.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(E.TagQuote),r.writeString(t)):r.writeByte(E.TagQuote),r.writeByte(E.TagQuote)}function d(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(E.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(E.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(E.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(E.TagOpenbrace),r.writeByte(E.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=j(e,a,r)}o.writeByte(E.TagObject),o.writeAsciiString(""+i),o.writeByte(E.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(E.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return O(t);case te.TagDouble:return E(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return A(t);case te.TagDate:return C(e);case te.TagTime:return x(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return z(e);case te.TagMap:return e.useHarmonyMap?Q(e):H(e);case te.TagClass:return K(e),$(e);case te.TagObject:return J(e);case te.TagRef:return V(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function j(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function O(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function S(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return O(e);default:n(t)}}function E(e){return parseFloat(e.readUntil(te.TagSemicolon))}function B(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return E(e);case te.TagNaN:return NaN;case te.TagInfinity:return A(e);default:n(t)}}function A(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return V(e);default:n(t)}}function x(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function R(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return x(e);case te.TagRef:return V(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return V(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return V(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return V(e);default:n(t)}}function z(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return j(this.stream)}},readLong:{value:function(){return S(this.stream)}},readDouble:{value:function(){return B(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return x(this)}},readTime:{value:function(){return R(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return z(this)}},readList:{value:function(){return q(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):H(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return $(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=X}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ve.length;r=0;r--)e=Ve[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=S(e,t);if(null!==n)return n;throw r})}function j(e,t,r,n){at(e,t).then(r,n)}function O(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;Ke(ht)}function S(e,t){if(t.failswitch&&O(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function E(e){var t={retry:ze,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};j(y,t,r,et.reject)}function B(e,t){return function(){return Xe?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function A(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,x(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):$e(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=R(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){j(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?H(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:ze,retried:0,idempotent:qe,failswitch:He,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function z(e,t){var r=e.reduce(function(e,t){return e.write(R(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){j(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var y=u.readList();C(y,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function q(){Xe=!0}function H(e){if(e=e||{},Xe=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return $e}function Q(e){typeof e===b&&($e=e)}function Y(){return Ke}function J(e){typeof e===b&&(Ke=e)}function $(){return Ue}function K(){return Le}function V(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function X(){return He}function Z(e){He=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return ze}function ie(e){ze="number"==typeof e?0|e:0}function oe(){return qe}function ae(e){qe=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ve.length?null:1===Ve.length?Ve[0]:Ve.slice()}function ye(e){Ve.length=0,Array.isArray(e)?e.forEach(function(e){de(e)}):de(e)}function de(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ve.push(e)}function we(e){var t=Ve.indexOf(e);return t!==-1&&(Ve.splice(t,1),!0)}function me(){return Ve}function be(e,t,n){n===r&&(typeof t===d&&(n=t,t=!1),t||(typeof e===d?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(E,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Ee(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Se(i,t,n)}}else rt.then(function(t){Ee(e,t,n)});else p.isPromise(t)?t.then(function(t){Ee(e,t,n)}):Se(tt[e],t,n);g(tt[e])&&delete tt[e]}function Be(e){return!!tt[e]}function Ae(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.sync(function(){return t(r,n,i,e)})}},L)}function xe(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},z)}function Re(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,ze=10,qe=!1,He=!1,Ge=0,Qe=!1,Ye=[],Je=!1,$e=n,Ke=n,Ve=[],Xe=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=z,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:q},end:{value:H},use:{value:function(e){return xe(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return Re(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:$},uriList:{get:K,set:V},id:{get:ke},failswitch:{get:X,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:ye},addFilter:{value:de},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:Oe},unsubscribe:{value:Ee},isSubscribed:{value:Be},subscribedList:{value:Ae},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(V(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,y=new Uint8Array(1);y[0]=s.TagEnd;var d="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,o,a){function l(e,t){var i=new s,o=new h;o.open("POST",O.uri,!0),v&&(o.withCredentials="true"),o.responseType="arraybuffer";for(var a in T)o.setRequestHeader(a,T[a]);if(o.onload=function(){o.onload=n,o.status&&(200===o.status?i.resolve(new Uint8Array(o.response)):i.reject(new Error(o.status+":"+o.statusText)))},o.onerror=function(){i.reject(new Error("error"))},o.upload!==r&&(o.upload.onprogress=_),o.onprogress=j,t.timeout>0&&(i=i.timeout(t.timeout).catchError(function(e){throw o.onload=n,o.onerror=n,o.abort(),e},function(e){return e instanceof f})),e.constructor===String||ArrayBuffer.isView)o.send(e);else if(e.buffer.slice)o.send(e.buffer.slice(0,e.length));else{ -var u=new Uint8Array(e.length);u.set(e),o.send(u.buffer)}return i}function p(e,r){var n=new s;return t.api.ajax({url:O.uri(),method:"post",data:{body:c.toString(e)},timeout:r.timeout,dataType:"text",headers:T,certificate:O.certificate},function(e,t){e?n.resolve(new c(e).takeBytes()):n.reject(new Error(t.msg))}),n}function g(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?p(e,r):l(e,r);return r.oneway&&i.resolve(),i}function y(e){"function"==typeof e&&(_=e)}function d(){return _}function w(e){"function"==typeof e&&(j=e)}function m(){return j}function b(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?T[e]=t:delete T[e])}if(this.constructor!==i)return new i(e,o,a);u.call(this,e,o,a);var T=Object.create(null),_=n,j=n,O=this;Object.defineProperties(this,{onprogress:{get:d,set:y},onRequestProgress:{get:d,set:y},onResponseProgress:{get:m,set:w},setHeader:{value:b},sendAndReceive:{value:g}})}function o(e){var t=g(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.Client,s=e.Future,c=e.BytesIO,f=t.TimeoutError,l=t.location!==r&&"file:"===t.location.protocol,h=t.XMLHttpRequest,p="undefined"!=typeof h,v=!l&&p&&"withCredentials"in new h,g=e.parseuri;Object.defineProperty(i,"create",{value:a}),e.HttpClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?O.send(n):n.buffer.slice?O.send(n.buffer.slice(0,n.length)):O.send(n.buffer)}function p(e){j.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();j.then(function(){l(o[0],o[1])})}0!==b||S.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,O=null}function y(){j=new c,O=new h(S.uri),O.binaryType="arraybuffer",O.onopen=p,O.onmessage=v,O.onerror=n,O.onclose=g}function d(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==O&&O.readyState!==h.CLOSING&&O.readyState!==h.CLOSED||y(),b<100?(++b,j.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==O&&(O.onopen=n,O.onmessage=n,O.onclose=n,O.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],j=null,O=null,S=this;Object.defineProperties(this,{sendAndReceive:{value:d},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function y(e,t){var r=new g;return m?(null!==_&&_.uri===d.uri||(_=new a(d)),_.sendAndReceive(e,r,t)):(null!==j&&j.uri===d.uri||(j=new u(d)),j.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var d=this,w=!0,m=!1,b=10,T=3e4,_=null,j=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:y}})}function c(e){var t=d(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,y=t.TimeoutError,d=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=d(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new y("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new y("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===O)throw new Error("Generator is already running");if(i===S){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=j,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=S,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=O;var c=r(e,t,n);if("normal"===c.type){i=n.done?S:j;var f={value:c.arg,done:n.done};if(c.arg!==E)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=S,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=y.call(i,"catchLoc"),u=y.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&y.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),E}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},E}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function O(e){if(T(e)||b(e))return A(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function j(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function E(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return T(e)||b(e)?A(e):o(e)}function A(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?O(e.value):S(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=te.call(arguments,1);e=e.apply(o,a)}if(!e||"function"!=typeof e.next)return S(e);var u=new n;return t(),u}function B(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?A.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function H(e,t,r){e?D(e,t,r):t.resolve(r)}function z(e,t,r){e?D(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,X="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;A.wrap=B,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:S},join:{value:v},any:{value:d},settle:{value:y},attempt:{value:w},run:{value:m},thunkify:{value:j},promisify:{value:E},co:{value:A},wrap:{value:B},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:R},map:{value:x},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();H(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?H(e,r,this._value):this._state===J?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=E,e.co=A,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},X||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ +TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.sync(function(){return t(r,n,i,e)})}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 6843439..8568f36 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 7efb15e..127dc00 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.29 +// Hprose for HTML5 v2.0.30 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -5259,6 +5259,127 @@ hprose.global = ( })(hprose, hprose.global); +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * CookieManager.js * + * * + * hprose CookieManager for HTML5. * + * * + * LastModified: Dec 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (hprose) { + 'use strict'; + + var parseuri = hprose.parseuri; + + var s_cookieManager = {}; + + function setCookie(headers, uri) { + var parser = parseuri(uri); + var host = parser.host; + var name, values; + function _setCookie(value) { + var cookies, cookie, i; + cookies = value.replace(/(^\s*)|(\s*$)/g, '').split(';'); + cookie = {}; + value = cookies[0].replace(/(^\s*)|(\s*$)/g, '').split('=', 2); + if (value[1] === undefined) { value[1] = null; } + cookie.name = value[0]; + cookie.value = value[1]; + for (i = 1; i < cookies.length; i++) { + value = cookies[i].replace(/(^\s*)|(\s*$)/g, '').split('=', 2); + if (value[1] === undefined) { value[1] = null; } + cookie[value[0].toUpperCase()] = value[1]; + } + // Tomcat can return SetCookie2 with path wrapped in " + if (cookie.PATH) { + if (cookie.PATH.charAt(0) === '"') { + cookie.PATH = cookie.PATH.substr(1); + } + if (cookie.PATH.charAt(cookie.PATH.length - 1) === '"') { + cookie.PATH = cookie.PATH.substr(0, cookie.PATH.length - 1); + } + } + else { + cookie.PATH = '/'; + } + if (cookie.EXPIRES) { + cookie.EXPIRES = Date.parse(cookie.EXPIRES); + } + if (cookie.DOMAIN) { + cookie.DOMAIN = cookie.DOMAIN.toLowerCase(); + } + else { + cookie.DOMAIN = host; + } + cookie.SECURE = (cookie.SECURE !== undefined); + if (s_cookieManager[cookie.DOMAIN] === undefined) { + s_cookieManager[cookie.DOMAIN] = {}; + } + s_cookieManager[cookie.DOMAIN][cookie.name] = cookie; + } + for (name in headers) { + values = headers[name]; + name = name.toLowerCase(); + if ((name === 'set-cookie') || (name === 'set-cookie2')) { + if (typeof(values) === 'string') { + values = [values]; + } + values.forEach(_setCookie); + } + } + } + + function getCookie(uri) { + var parser = parseuri(uri); + var host = parser.host; + var path = parser.path; + var secure = (parser.protocol === 'https:'); + var cookies = []; + for (var domain in s_cookieManager) { + if (host.indexOf(domain) > -1) { + var names = []; + for (var name in s_cookieManager[domain]) { + var cookie = s_cookieManager[domain][name]; + if (cookie.EXPIRES && ((new Date()).getTime() > cookie.EXPIRES)) { + names.push(name); + } + else if (path.indexOf(cookie.PATH) === 0) { + if (((secure && cookie.SECURE) || + !cookie.SECURE) && (cookie.value !== null)) { + cookies.push(cookie.name + '=' + cookie.value); + } + } + } + for (var i in names) { + delete s_cookieManager[domain][names[i]]; + } + } + } + if (cookies.length > 0) { + return cookies.join('; '); + } + return ''; + } + + hprose.cookieManager = { + setCookie: setCookie, + getCookie: getCookie + }; +})(hprose); + /**********************************************************\ | | | hprose | @@ -5273,7 +5394,7 @@ hprose.global = ( * * * hprose http client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5290,9 +5411,36 @@ hprose.global = ( var nativeXHR = (typeof(XMLHttpRequest) !== 'undefined'); var corsSupport = (!localfile && nativeXHR && 'withCredentials' in new XMLHttpRequest()); var parseuri = hprose.parseuri; + var cookieManager = hprose.cookieManager; function noop(){} + function getResponseHeader(headers) { + var header = Object.create(null); + if (headers) { + headers = headers.split("\r\n"); + for (var i = 0, n = headers.length; i < n; i++) { + if (headers[i] !== "") { + var kv = headers[i].split(": ", 2); + var k = kv[0].trim(); + var v = kv[1].trim(); + if (k in header) { + if (Array.isArray(header[k])) { + header[k].push(v); + } + else { + header[k] = [header[k], v]; + } + } + else { + header[k] = v; + } + } + } + } + return header; + } + function HttpClient(uri, functions, settings) { if (this.constructor !== HttpClient) { return new HttpClient(uri, functions, settings); @@ -5304,7 +5452,27 @@ hprose.global = ( var self = this; - function xhrPost(request, env) { + function getRequestHeader(headers) { + var header = Object.create(null); + var name, value; + for (name in _header) { + header[name] = _header[name]; + } + if (headers) { + for (name in headers) { + value = headers[name]; + if (Array.isArray(value)) { + header[name] = value.join(', '); + } + else { + header[name] = value; + } + } + } + return header; + } + + function xhrPost(request, context) { var future = new Future(); var xhr = new XMLHttpRequest(); xhr.open('POST', self.uri, true); @@ -5312,12 +5480,15 @@ hprose.global = ( xhr.withCredentials = 'true'; } xhr.responseType = 'arraybuffer'; - for (var name in _header) { - xhr.setRequestHeader(name, _header[name]); + var header = getRequestHeader(context.httpHeader); + for (var name in header) { + xhr.setRequestHeader(name, header[name]); } xhr.onload = function() { xhr.onload = noop; if (xhr.status) { + var headers = xhr.getAllResponseHeaders(); + context.httpHeader = getResponseHeader(headers); if (xhr.status === 200) { future.resolve(new Uint8Array(xhr.response)); } @@ -5333,8 +5504,8 @@ hprose.global = ( xhr.upload.onprogress = _onreqprogress; } xhr.onprogress = _onresprogress; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { + if (context.timeout > 0) { + future = future.timeout(context.timeout).catchError(function(e) { xhr.onload = noop; xhr.onerror = noop; xhr.abort(); @@ -5358,33 +5529,46 @@ hprose.global = ( return future; } - function apiPost(request, env) { + function apiPost(request, context) { var future = new Future(); + var header = getRequestHeader(context.httpHeader); + var cookie = cookieManager.getCookie(self.uri()); + if (cookie !== '') { + header['Cookie'] = cookie; + } global.api.ajax({ - url: self.uri(), + url: self.uri, method: 'post', data: { body: BytesIO.toString(request) }, - timeout: env.timeout, + timeout: context.timeout, dataType: 'text', - headers: _header, + headers: header, + returnAll: true, certificate: self.certificate }, function(ret, err) { if (ret) { - future.resolve((new BytesIO(ret)).takeBytes()); + context.httpHeader = ret.headers; + if (ret.statusCode === 200) { + cookieManager.setCookie(ret.headers, self.uri); + future.resolve((new BytesIO(ret.body)).takeBytes()); + } + else { + future.reject(new Error(ret.statusCode+':'+ret.body)); + } } else { future.reject(new Error(err.msg)); - } + } }); return future; } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var apicloud = (typeof(global.api) !== "undefined" && typeof(global.api.ajax) !== "undefined"); - var future = apicloud ? apiPost(request, env) : - xhrPost(request, env); - if (env.oneway) { future.resolve(); } + var future = apicloud ? apiPost(request, context) : + xhrPost(request, context); + if (context.oneway) { future.resolve(); } return future; } @@ -5466,7 +5650,7 @@ hprose.global = ( * * * hprose websocket client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5563,12 +5747,12 @@ hprose.global = ( ws.onerror = noop; ws.onclose = onclose; } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var id = getNextId(); var future = new Future(); _futures[id] = future; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { + if (context.timeout > 0) { + future = future.timeout(context.timeout).catchError(function(e) { delete _futures[id]; --_count; throw e; @@ -5589,7 +5773,7 @@ hprose.global = ( else { _requests.push([id, request]); } - if (env.oneway) { future.resolve(); } + if (context.oneway) { future.resolve(); } return future; } function close() { @@ -5964,7 +6148,7 @@ hprose.global = ( * * * hprose tcp client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -6155,9 +6339,9 @@ hprose.global = ( } } } }, - send: { value: function(request, future, id, env, conn) { + send: { value: function(request, future, id, context, conn) { var self = this; - var timeout = env.timeout; + var timeout = context.timeout; if (timeout > 0) { conn.timeoutIds[id] = global.setTimeout(function() { self.clean(conn, id); @@ -6182,11 +6366,11 @@ hprose.global = ( getNextId: { value: function() { return (this.nextid < 0x7fffffff) ? ++this.nextid : this.nextid = 0; } }, - sendAndReceive: { value: function(request, future, env) { + sendAndReceive: { value: function(request, future, context) { var conn = this.fetch(); var id = this.getNextId(); if (conn) { - this.send(request, future, id, env, conn); + this.send(request, future, id, context, conn); } else if (this.size < this.client.maxPoolSize) { conn = this.create(); @@ -6196,11 +6380,11 @@ hprose.global = ( var self = this; conn.onconnect = function() { self.init(conn); - self.send(request, future, id, env, conn); + self.send(request, future, id, context, conn); }; } else { - this.requests.push([request, future, id, env]); + this.requests.push([request, future, id, context]); } } } }); @@ -6252,9 +6436,9 @@ hprose.global = ( this.recycle(conn); } } }, - send: { value: function(request, future, env, conn) { + send: { value: function(request, future, context, conn) { var self = this; - var timeout = env.timeout; + var timeout = context.timeout; if (timeout > 0) { conn.timeoutId = global.setTimeout(function() { self.clean(conn); @@ -6278,10 +6462,10 @@ hprose.global = ( buf.write(request); conn.send(buf.buffer); } }, - sendAndReceive: { value: function(request, future, env) { + sendAndReceive: { value: function(request, future, context) { var conn = this.fetch(); if (conn) { - this.send(request, future, env, conn); + this.send(request, future, context, conn); } else if (this.size < this.client.maxPoolSize) { conn = this.create(); @@ -6290,11 +6474,11 @@ hprose.global = ( future.reject(e); }; conn.onconnect = function() { - self.send(request, future, env, conn); + self.send(request, future, context, conn); }; } else { - this.requests.push([request, future, env]); + this.requests.push([request, future, context]); } } } }); @@ -6360,21 +6544,21 @@ hprose.global = ( } } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var future = new Future(); if (_fullDuplex) { if ((fdtrans === null) || (fdtrans.uri !== self.uri)) { fdtrans = new FullDuplexTcpTransporter(self); } - fdtrans.sendAndReceive(request, future, env); + fdtrans.sendAndReceive(request, future, context); } else { if ((hdtrans === null) || (hdtrans.uri !== self.uri)) { hdtrans = new HalfDuplexTcpTransporter(self); } - hdtrans.sendAndReceive(request, future, env); + hdtrans.sendAndReceive(request, future, context); } - if (env.oneway) { future.resolve(); } + if (context.oneway) { future.resolve(); } return future; } diff --git a/gulpfile.js b/gulpfile.js index 5e4a91b..cf47b0a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -27,6 +27,7 @@ gulp.task('concat', ['clear'], function() { 'src/Formatter.js', 'src/ResultMode.js', 'src/Client.js', + 'src/CookieManager.js', 'src/HttpClient.js', 'src/WebSocketClient.js', 'src/ChromeTcpSocket.js', diff --git a/package.json b/package.json index b80048e..975a964 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,8 @@ { "name": "hprose-html5", - "filename": "hprose-html5.js", - "version": "2.0.29", + "version": "2.0.30", "description": "Hprose is a High Performance Remote Object Service Engine.", - "homepage": "https://github.com/andot/hprose", + "homepage": "https://github.com/hprose/hprose-html5", "keywords": [ "hprose", "rpc", @@ -42,25 +41,37 @@ "oneway", "promises-aplus" ], - "maintainers": [ - { - "name" : "Ma Bingyao", - "email" : "andot@hprose.com", - "web": "http://hprose.com/" - } - ], - "repositories": [ - { - "type": "git", - "url": "https://github.com/hprose/hprose-html5.git" - } - ], + "author": { + "name": "Ma Bingyao", + "email": "andot@hprose.com", + "url": "http://hprose.com/" + }, + "directories": { + "lib": "dist/" + }, + "main": "dist/hprose-html5.js", + "devDependencies": { + "promises-aplus-tests": "*" + }, + "scripts": { + "aplus-tests": "promises-aplus-tests dist/hprose-html5.js" + }, + "engines": { + "node": "*" + }, + "repository": { + "type": "git", + "url": "https://github.com/hprose/hprose-html5.git" + }, "autoupdate": { "source": "git", "target": "git://github.com/hprose/hprose-html5.git", "basePath": "dist/", - "files": [ - "hprose-html5.js" - ] - } + "files": [ "hprose-html5.js" ] + }, + "bugs": { + "url": "https://github.com/hprose/hprose-html5/issues", + "email": "andot@hprose.com" + }, + "license" : "MIT" } diff --git a/src/CookieManager.js b/src/CookieManager.js new file mode 100644 index 0000000..1414c1a --- /dev/null +++ b/src/CookieManager.js @@ -0,0 +1,120 @@ +/**********************************************************\ +| | +| hprose | +| | +| Official WebSite: http://www.hprose.com/ | +| http://www.hprose.org/ | +| | +\**********************************************************/ + +/**********************************************************\ + * * + * CookieManager.js * + * * + * hprose CookieManager for HTML5. * + * * + * LastModified: Dec 2, 2016 * + * Author: Ma Bingyao * + * * +\**********************************************************/ + +(function (hprose) { + 'use strict'; + + var parseuri = hprose.parseuri; + + var s_cookieManager = {}; + + function setCookie(headers, uri) { + var parser = parseuri(uri); + var host = parser.host; + var name, values; + function _setCookie(value) { + var cookies, cookie, i; + cookies = value.replace(/(^\s*)|(\s*$)/g, '').split(';'); + cookie = {}; + value = cookies[0].replace(/(^\s*)|(\s*$)/g, '').split('=', 2); + if (value[1] === undefined) { value[1] = null; } + cookie.name = value[0]; + cookie.value = value[1]; + for (i = 1; i < cookies.length; i++) { + value = cookies[i].replace(/(^\s*)|(\s*$)/g, '').split('=', 2); + if (value[1] === undefined) { value[1] = null; } + cookie[value[0].toUpperCase()] = value[1]; + } + // Tomcat can return SetCookie2 with path wrapped in " + if (cookie.PATH) { + if (cookie.PATH.charAt(0) === '"') { + cookie.PATH = cookie.PATH.substr(1); + } + if (cookie.PATH.charAt(cookie.PATH.length - 1) === '"') { + cookie.PATH = cookie.PATH.substr(0, cookie.PATH.length - 1); + } + } + else { + cookie.PATH = '/'; + } + if (cookie.EXPIRES) { + cookie.EXPIRES = Date.parse(cookie.EXPIRES); + } + if (cookie.DOMAIN) { + cookie.DOMAIN = cookie.DOMAIN.toLowerCase(); + } + else { + cookie.DOMAIN = host; + } + cookie.SECURE = (cookie.SECURE !== undefined); + if (s_cookieManager[cookie.DOMAIN] === undefined) { + s_cookieManager[cookie.DOMAIN] = {}; + } + s_cookieManager[cookie.DOMAIN][cookie.name] = cookie; + } + for (name in headers) { + values = headers[name]; + name = name.toLowerCase(); + if ((name === 'set-cookie') || (name === 'set-cookie2')) { + if (typeof(values) === 'string') { + values = [values]; + } + values.forEach(_setCookie); + } + } + } + + function getCookie(uri) { + var parser = parseuri(uri); + var host = parser.host; + var path = parser.path; + var secure = (parser.protocol === 'https:'); + var cookies = []; + for (var domain in s_cookieManager) { + if (host.indexOf(domain) > -1) { + var names = []; + for (var name in s_cookieManager[domain]) { + var cookie = s_cookieManager[domain][name]; + if (cookie.EXPIRES && ((new Date()).getTime() > cookie.EXPIRES)) { + names.push(name); + } + else if (path.indexOf(cookie.PATH) === 0) { + if (((secure && cookie.SECURE) || + !cookie.SECURE) && (cookie.value !== null)) { + cookies.push(cookie.name + '=' + cookie.value); + } + } + } + for (var i in names) { + delete s_cookieManager[domain][names[i]]; + } + } + } + if (cookies.length > 0) { + return cookies.join('; '); + } + return ''; + } + + hprose.cookieManager = { + setCookie: setCookie, + getCookie: getCookie + }; +})(hprose); diff --git a/src/CopyRight.js b/src/CopyRight.js index 5465baa..104d9ff 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.29 +// Hprose for HTML5 v2.0.30 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/HttpClient.js b/src/HttpClient.js index d8049c5..569deb1 100644 --- a/src/HttpClient.js +++ b/src/HttpClient.js @@ -12,7 +12,7 @@ * * * hprose http client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -29,9 +29,36 @@ var nativeXHR = (typeof(XMLHttpRequest) !== 'undefined'); var corsSupport = (!localfile && nativeXHR && 'withCredentials' in new XMLHttpRequest()); var parseuri = hprose.parseuri; + var cookieManager = hprose.cookieManager; function noop(){} + function getResponseHeader(headers) { + var header = Object.create(null); + if (headers) { + headers = headers.split("\r\n"); + for (var i = 0, n = headers.length; i < n; i++) { + if (headers[i] !== "") { + var kv = headers[i].split(": ", 2); + var k = kv[0].trim(); + var v = kv[1].trim(); + if (k in header) { + if (Array.isArray(header[k])) { + header[k].push(v); + } + else { + header[k] = [header[k], v]; + } + } + else { + header[k] = v; + } + } + } + } + return header; + } + function HttpClient(uri, functions, settings) { if (this.constructor !== HttpClient) { return new HttpClient(uri, functions, settings); @@ -43,7 +70,27 @@ var self = this; - function xhrPost(request, env) { + function getRequestHeader(headers) { + var header = Object.create(null); + var name, value; + for (name in _header) { + header[name] = _header[name]; + } + if (headers) { + for (name in headers) { + value = headers[name]; + if (Array.isArray(value)) { + header[name] = value.join(', '); + } + else { + header[name] = value; + } + } + } + return header; + } + + function xhrPost(request, context) { var future = new Future(); var xhr = new XMLHttpRequest(); xhr.open('POST', self.uri, true); @@ -51,12 +98,15 @@ xhr.withCredentials = 'true'; } xhr.responseType = 'arraybuffer'; - for (var name in _header) { - xhr.setRequestHeader(name, _header[name]); + var header = getRequestHeader(context.httpHeader); + for (var name in header) { + xhr.setRequestHeader(name, header[name]); } xhr.onload = function() { xhr.onload = noop; if (xhr.status) { + var headers = xhr.getAllResponseHeaders(); + context.httpHeader = getResponseHeader(headers); if (xhr.status === 200) { future.resolve(new Uint8Array(xhr.response)); } @@ -72,8 +122,8 @@ xhr.upload.onprogress = _onreqprogress; } xhr.onprogress = _onresprogress; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { + if (context.timeout > 0) { + future = future.timeout(context.timeout).catchError(function(e) { xhr.onload = noop; xhr.onerror = noop; xhr.abort(); @@ -97,33 +147,46 @@ return future; } - function apiPost(request, env) { + function apiPost(request, context) { var future = new Future(); + var header = getRequestHeader(context.httpHeader); + var cookie = cookieManager.getCookie(self.uri()); + if (cookie !== '') { + header['Cookie'] = cookie; + } global.api.ajax({ - url: self.uri(), + url: self.uri, method: 'post', data: { body: BytesIO.toString(request) }, - timeout: env.timeout, + timeout: context.timeout, dataType: 'text', - headers: _header, + headers: header, + returnAll: true, certificate: self.certificate }, function(ret, err) { if (ret) { - future.resolve((new BytesIO(ret)).takeBytes()); + context.httpHeader = ret.headers; + if (ret.statusCode === 200) { + cookieManager.setCookie(ret.headers, self.uri); + future.resolve((new BytesIO(ret.body)).takeBytes()); + } + else { + future.reject(new Error(ret.statusCode+':'+ret.body)); + } } else { future.reject(new Error(err.msg)); - } + } }); return future; } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var apicloud = (typeof(global.api) !== "undefined" && typeof(global.api.ajax) !== "undefined"); - var future = apicloud ? apiPost(request, env) : - xhrPost(request, env); - if (env.oneway) { future.resolve(); } + var future = apicloud ? apiPost(request, context) : + xhrPost(request, context); + if (context.oneway) { future.resolve(); } return future; } diff --git a/src/TcpClient.js b/src/TcpClient.js index 1816e3e..964a4e8 100644 --- a/src/TcpClient.js +++ b/src/TcpClient.js @@ -12,7 +12,7 @@ * * * hprose tcp client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -203,9 +203,9 @@ } } } }, - send: { value: function(request, future, id, env, conn) { + send: { value: function(request, future, id, context, conn) { var self = this; - var timeout = env.timeout; + var timeout = context.timeout; if (timeout > 0) { conn.timeoutIds[id] = global.setTimeout(function() { self.clean(conn, id); @@ -230,11 +230,11 @@ getNextId: { value: function() { return (this.nextid < 0x7fffffff) ? ++this.nextid : this.nextid = 0; } }, - sendAndReceive: { value: function(request, future, env) { + sendAndReceive: { value: function(request, future, context) { var conn = this.fetch(); var id = this.getNextId(); if (conn) { - this.send(request, future, id, env, conn); + this.send(request, future, id, context, conn); } else if (this.size < this.client.maxPoolSize) { conn = this.create(); @@ -244,11 +244,11 @@ var self = this; conn.onconnect = function() { self.init(conn); - self.send(request, future, id, env, conn); + self.send(request, future, id, context, conn); }; } else { - this.requests.push([request, future, id, env]); + this.requests.push([request, future, id, context]); } } } }); @@ -300,9 +300,9 @@ this.recycle(conn); } } }, - send: { value: function(request, future, env, conn) { + send: { value: function(request, future, context, conn) { var self = this; - var timeout = env.timeout; + var timeout = context.timeout; if (timeout > 0) { conn.timeoutId = global.setTimeout(function() { self.clean(conn); @@ -326,10 +326,10 @@ buf.write(request); conn.send(buf.buffer); } }, - sendAndReceive: { value: function(request, future, env) { + sendAndReceive: { value: function(request, future, context) { var conn = this.fetch(); if (conn) { - this.send(request, future, env, conn); + this.send(request, future, context, conn); } else if (this.size < this.client.maxPoolSize) { conn = this.create(); @@ -338,11 +338,11 @@ future.reject(e); }; conn.onconnect = function() { - self.send(request, future, env, conn); + self.send(request, future, context, conn); }; } else { - this.requests.push([request, future, env]); + this.requests.push([request, future, context]); } } } }); @@ -408,21 +408,21 @@ } } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var future = new Future(); if (_fullDuplex) { if ((fdtrans === null) || (fdtrans.uri !== self.uri)) { fdtrans = new FullDuplexTcpTransporter(self); } - fdtrans.sendAndReceive(request, future, env); + fdtrans.sendAndReceive(request, future, context); } else { if ((hdtrans === null) || (hdtrans.uri !== self.uri)) { hdtrans = new HalfDuplexTcpTransporter(self); } - hdtrans.sendAndReceive(request, future, env); + hdtrans.sendAndReceive(request, future, context); } - if (env.oneway) { future.resolve(); } + if (context.oneway) { future.resolve(); } return future; } diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index f4e264f..7725319 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 2, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -109,12 +109,12 @@ ws.onerror = noop; ws.onclose = onclose; } - function sendAndReceive(request, env) { + function sendAndReceive(request, context) { var id = getNextId(); var future = new Future(); _futures[id] = future; - if (env.timeout > 0) { - future = future.timeout(env.timeout).catchError(function(e) { + if (context.timeout > 0) { + future = future.timeout(context.timeout).catchError(function(e) { delete _futures[id]; --_count; throw e; @@ -135,7 +135,7 @@ else { _requests.push([id, request]); } - if (env.oneway) { future.resolve(); } + if (context.oneway) { future.resolve(); } return future; } function close() { From 1c11d241a62b12f0aa294bb0c3c0f8fbc24e6d64 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 5 Dec 2016 22:39:22 +0800 Subject: [PATCH 69/86] Improved co --- src/Future.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Future.js b/src/Future.js index d3db0e4..898a01c 100644 --- a/src/Future.js +++ b/src/Future.js @@ -13,7 +13,7 @@ * * * hprose Future for HTML5. * * * - * LastModified: Nov 24, 2016 * + * LastModified: Dec 5, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -313,7 +313,7 @@ } if (!gen || typeof gen.next !== 'function') { - return toPromise(gen); + return toFuture(gen); } var future = new Future(); From 48e7925dc19a357bbe84f62150f789db331003e2 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 5 Dec 2016 22:39:26 +0800 Subject: [PATCH 70/86] Added coroutine middleware support. --- bower.json | 2 +- dist/hprose-html5.js | 8 ++++---- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 24 ++++++++---------------- package.json | 2 +- src/Client.js | 18 +++++------------- src/CopyRight.js | 2 +- 7 files changed, 21 insertions(+), 37 deletions(-) diff --git a/bower.json b/bower.json index 4160d57..156dc5f 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.30", + "version": "2.0.31", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 30b9f4d..c30e411 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.30 +// Hprose for HTML5 v2.0.31 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 -var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function O(e){if(T(e)||b(e))return A(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function j(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function E(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return T(e)||b(e)?A(e):o(e)}function A(e){function t(t){try{i(e.next(t))}catch(e){u.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){u.reject(e)}}function i(e){e.done?u.resolve(e.value):("function"==typeof e.value?O(e.value):S(e.value)).then(t,r)}var o=function(){return this}();if("function"==typeof e){var a=te.call(arguments,1);e=e.apply(o,a)}if(!e||"function"!=typeof e.next)return S(e);var u=new n;return t(),u}function B(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?A.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function H(e,t,r){e?D(e,t,r):t.resolve(r)}function z(e,t,r){e?D(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,X="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;A.wrap=B,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:S},join:{value:v},any:{value:d},settle:{value:y},attempt:{value:w},run:{value:m},thunkify:{value:j},promisify:{value:E},co:{value:A},wrap:{value:B},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:R},map:{value:x},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();H(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?H(e,r,this._value):this._state===J?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=E,e.co=A,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},X||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ -TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.sync(function(){return t(r,n,i,e)})}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.sync(function(){return t(r,n,e)})}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function O(e){if(T(e)||b(e))return A(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function j(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function E(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return T(e)||b(e)?A(e):o(e)}function A(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){s.reject(e)}}function i(e){e.done?s.resolve(e.value):("function"==typeof e.value?O(e.value):S(e.value)).then(t,r)}var a=function(){return this}();if("function"==typeof e){var u=te.call(arguments,1);e=e.apply(a,u)}if(!e||"function"!=typeof e.next)return o(e);var s=new n;return t(),s}function B(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?A.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function H(e,t,r){e?D(e,t,r):t.resolve(r)}function z(e,t,r){e?D(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,X="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;A.wrap=B,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:S},join:{value:v},any:{value:d},settle:{value:y},attempt:{value:w},run:{value:m},thunkify:{value:j},promisify:{value:E},co:{value:A},wrap:{value:B},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:R},map:{value:x},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();H(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?H(e,r,this._value):this._state===J?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=E,e.co=A,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},X||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ +TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.toPromise(t(r,n,i,e))}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 8568f36..92547d0 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index 127dc00..f39786f 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.30 +// Hprose for HTML5 v2.0.31 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -1098,7 +1098,7 @@ hprose.global = ( * * * hprose Future for HTML5. * * * - * LastModified: Nov 24, 2016 * + * LastModified: Dec 5, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1398,7 +1398,7 @@ hprose.global = ( } if (!gen || typeof gen.next !== 'function') { - return toPromise(gen); + return toFuture(gen); } var future = new Future(); @@ -4061,7 +4061,7 @@ hprose.global = ( * * * hprose client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 5, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5099,9 +5099,7 @@ hprose.global = ( _invokeHandler = _invokeHandlers.reduceRight( function(next, handler) { return function(name, args, context) { - return Future.sync(function() { - return handler(name, args, context, next); - }); + return Future.toPromise(handler(name, args, context, next)); }; }, invokeHandler); } @@ -5110,9 +5108,7 @@ hprose.global = ( _batchInvokeHandler = _batchInvokeHandlers.reduceRight( function(next, handler) { return function(batches, context) { - return Future.sync(function() { - return handler(batches, context, next); - }); + return Future.toPromise(handler(batches, context, next)); }; }, batchInvokeHandler); } @@ -5121,9 +5117,7 @@ hprose.global = ( _beforeFilterHandler = _beforeFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - return Future.sync(function() { - return handler(request, context, next); - }); + return Future.toPromise(handler(request, context, next)); }; }, beforeFilterHandler); } @@ -5132,9 +5126,7 @@ hprose.global = ( _afterFilterHandler = _afterFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - return Future.sync(function() { - return handler(request, context, next); - }); + return Future.toPromise(handler(request, context, next)); }; }, afterFilterHandler); } diff --git a/package.json b/package.json index 975a964..713a770 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hprose-html5", - "version": "2.0.30", + "version": "2.0.31", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/hprose/hprose-html5", "keywords": [ diff --git a/src/Client.js b/src/Client.js index 7979566..74e88fe 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Dec 5, 2016 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -1050,9 +1050,7 @@ _invokeHandler = _invokeHandlers.reduceRight( function(next, handler) { return function(name, args, context) { - return Future.sync(function() { - return handler(name, args, context, next); - }); + return Future.toPromise(handler(name, args, context, next)); }; }, invokeHandler); } @@ -1061,9 +1059,7 @@ _batchInvokeHandler = _batchInvokeHandlers.reduceRight( function(next, handler) { return function(batches, context) { - return Future.sync(function() { - return handler(batches, context, next); - }); + return Future.toPromise(handler(batches, context, next)); }; }, batchInvokeHandler); } @@ -1072,9 +1068,7 @@ _beforeFilterHandler = _beforeFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - return Future.sync(function() { - return handler(request, context, next); - }); + return Future.toPromise(handler(request, context, next)); }; }, beforeFilterHandler); } @@ -1083,9 +1077,7 @@ _afterFilterHandler = _afterFilterHandlers.reduceRight( function(next, handler) { return function(request, context) { - return Future.sync(function() { - return handler(request, context, next); - }); + return Future.toPromise(handler(request, context, next)); }; }, afterFilterHandler); } diff --git a/src/CopyRight.js b/src/CopyRight.js index 104d9ff..5711185 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.30 +// Hprose for HTML5 v2.0.31 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From f200328528385bf9e903a17e12bf3830dfa8ce32 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 11 Dec 2016 21:22:45 +0800 Subject: [PATCH 71/86] Update README --- README.md | 6 +++--- README_zh_CN.md | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2321d86..63fa044 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ +

Hprose

+ Promises/A+ logo - - - + # Hprose for HTML5 [![Join the chat at https://gitter.im/hprose/hprose-html5](https://img.shields.io/badge/GITTER-join%20chat-green.svg)](https://gitter.im/hprose/hprose-html5?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) diff --git a/README_zh_CN.md b/README_zh_CN.md index 5f94724..41903bb 100644 --- a/README_zh_CN.md +++ b/README_zh_CN.md @@ -1,10 +1,9 @@ +

Hprose

+ Promises/A+ logo - - - # Hprose for HTML5 From b15b0b977b599a05bb470432bbfe500ab4feceb7 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 11 Dec 2016 21:25:39 +0800 Subject: [PATCH 72/86] Update README --- README.md | 1 + README_zh_CN.md | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 63fa044..674c5a5 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ [![Join the chat at https://gitter.im/hprose/hprose-html5](https://img.shields.io/badge/GITTER-join%20chat-green.svg)](https://gitter.im/hprose/hprose-html5?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![bower version](https://img.shields.io/bower/v/hprose-html5.svg)](http://bower.io/search/?q=hprose-html5) +[![npm version](https://img.shields.io/npm/v/hprose-html5.svg)](https://www.npmjs.com/package/hprose-html5) [![GitHub release](https://img.shields.io/github/release/hprose/hprose-html5.svg)](https://github.com/hprose/hprose-html5/releases) [![License](https://img.shields.io/github/license/hprose/hprose-html5.svg)](http://opensource.org/licenses/MIT) diff --git a/README_zh_CN.md b/README_zh_CN.md index 41903bb..6a15632 100644 --- a/README_zh_CN.md +++ b/README_zh_CN.md @@ -9,6 +9,7 @@ [![Join the chat at https://gitter.im/hprose/hprose-html5](https://img.shields.io/badge/GITTER-join%20chat-green.svg)](https://gitter.im/hprose/hprose-html5?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![bower version](https://img.shields.io/bower/v/hprose-html5.svg)](http://bower.io/search/?q=hprose-html5) +[![npm version](https://img.shields.io/npm/v/hprose-html5.svg)](https://www.npmjs.com/package/hprose-html5) [![GitHub release](https://img.shields.io/github/release/hprose/hprose-html5.svg)](https://github.com/hprose/hprose-html5/releases) [![License](https://img.shields.io/github/license/hprose/hprose-html5.svg)](http://opensource.org/licenses/MIT) From 4ccbd2903583ff424646b15bd5843672db58b182 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 11 Dec 2016 22:08:22 +0800 Subject: [PATCH 73/86] Update README --- README.md | 3 +-- README_zh_CN.md | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 674c5a5..2eb9986 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@

Hprose

- Promises/A+ logo + Promises/A+ logo # Hprose for HTML5 diff --git a/README_zh_CN.md b/README_zh_CN.md index 6a15632..7b5497b 100644 --- a/README_zh_CN.md +++ b/README_zh_CN.md @@ -1,8 +1,7 @@

Hprose

- Promises/A+ logo + Promises/A+ logo # Hprose for HTML5 From ce6e3bdec408fd6be3f3d42dedd58f091515d048 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Mon, 13 Feb 2017 15:05:55 +0800 Subject: [PATCH 74/86] if object has no constructor, return 'Object' --- bower.json | 2 +- dist/hprose-html5.js | 6 +++--- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 7 +++++-- package.json | 6 +++--- src/CopyRight.js | 2 +- src/Writer.js | 5 ++++- 7 files changed, 18 insertions(+), 12 deletions(-) diff --git a/bower.json b/bower.json index 156dc5f..2427072 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.31", + "version": "2.0.32", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index c30e411..75cdbe2 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.31 +// Hprose for HTML5 v2.0.32 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function O(e){if(T(e)||b(e))return A(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function j(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function E(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return T(e)||b(e)?A(e):o(e)}function A(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){s.reject(e)}}function i(e){e.done?s.resolve(e.value):("function"==typeof e.value?O(e.value):S(e.value)).then(t,r)}var a=function(){return this}();if("function"==typeof e){var u=te.call(arguments,1);e=e.apply(a,u)}if(!e||"function"!=typeof e.next)return o(e);var s=new n;return t(),s}function B(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?A.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function H(e,t,r){e?D(e,t,r):t.resolve(r)}function z(e,t,r){e?D(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,X="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;A.wrap=B,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:S},join:{value:v},any:{value:d},settle:{value:y},attempt:{value:w},run:{value:m},thunkify:{value:j},promisify:{value:E},co:{value:A},wrap:{value:B},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:R},map:{value:x},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();H(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?H(e,r,this._value):this._state===J?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=E,e.co=A,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},X||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ -TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor,r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.toPromise(t(r,n,i,e))}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor;if(!t)return"Object";var r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.toPromise(t(r,n,i,e))}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 92547d0..6087532 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index f39786f..e52b93a 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.31 +// Hprose for HTML5 v2.0.32 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -2671,7 +2671,7 @@ hprose.global = ( * * * hprose Writer for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Feb 13, 2017 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -2686,6 +2686,9 @@ hprose.global = ( function getClassName(obj) { var cls = obj.constructor; + if (!cls) { + return 'Object'; + } var classname = ClassManager.getClassAlias(cls); if (classname) { return classname; } if (cls.name) { diff --git a/package.json b/package.json index 713a770..dd3b691 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hprose-html5", - "version": "2.0.31", + "version": "2.0.32", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/hprose/hprose-html5", "keywords": [ @@ -49,7 +49,7 @@ "directories": { "lib": "dist/" }, - "main": "dist/hprose-html5.js", + "main": "dist/hprose-html5.src.js", "devDependencies": { "promises-aplus-tests": "*" }, @@ -67,7 +67,7 @@ "source": "git", "target": "git://github.com/hprose/hprose-html5.git", "basePath": "dist/", - "files": [ "hprose-html5.js" ] + "files": [ "hprose-html5.src.js" ] }, "bugs": { "url": "https://github.com/hprose/hprose-html5/issues", diff --git a/src/CopyRight.js b/src/CopyRight.js index 5711185..d4b629a 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.31 +// Hprose for HTML5 v2.0.32 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: diff --git a/src/Writer.js b/src/Writer.js index 16eba46..d99e83e 100644 --- a/src/Writer.js +++ b/src/Writer.js @@ -13,7 +13,7 @@ * * * hprose Writer for HTML5. * * * - * LastModified: Nov 18, 2016 * + * LastModified: Feb 13, 2017 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -28,6 +28,9 @@ function getClassName(obj) { var cls = obj.constructor; + if (!cls) { + return 'Object'; + } var classname = ClassManager.getClassAlias(cls); if (classname) { return classname; } if (cls.name) { From a3f1fae99e939f3c06bf93067109261f38a1311d Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 14 Feb 2017 19:43:22 +0800 Subject: [PATCH 75/86] Fixed method name --- bower.json | 2 +- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 6 +++--- package.json | 2 +- src/Client.js | 4 ++-- src/CopyRight.js | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/bower.json b/bower.json index 2427072..65877a0 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.32", + "version": "2.0.33", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 75cdbe2..7952127 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.32 +// Hprose for HTML5 v2.0.33 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function O(e){if(T(e)||b(e))return A(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function j(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function E(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return T(e)||b(e)?A(e):o(e)}function A(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){s.reject(e)}}function i(e){e.done?s.resolve(e.value):("function"==typeof e.value?O(e.value):S(e.value)).then(t,r)}var a=function(){return this}();if("function"==typeof e){var u=te.call(arguments,1);e=e.apply(a,u)}if(!e||"function"!=typeof e.next)return o(e);var s=new n;return t(),s}function B(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?A.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function H(e,t,r){e?D(e,t,r):t.resolve(r)}function z(e,t,r){e?D(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,X="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;A.wrap=B,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:S},join:{value:v},any:{value:d},settle:{value:y},attempt:{value:w},run:{value:m},thunkify:{value:j},promisify:{value:E},co:{value:A},wrap:{value:B},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:R},map:{value:x},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();H(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?H(e,r,this._value):this._state===J?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=E,e.co=A,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},X||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ -TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor;if(!t)return"Object";var r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.toPromise(t(r,n,i,e))}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.toPromise(t(r,n,i,e))}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index 6087532..f95918a 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index e52b93a..ea03766 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.32 +// Hprose for HTML5 v2.0.33 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -4064,7 +4064,7 @@ hprose.global = ( * * * hprose client for HTML5. * * * - * LastModified: Dec 5, 2016 * + * LastModified: Feb 14, 2017 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -4277,7 +4277,7 @@ hprose.global = ( } else { for (var n in m) { - setMethods(stub, obj[name], name + '_', n, m[n]); + setMethods(stub, obj[name], namespace + name + '_', n, m[n]); } } } diff --git a/package.json b/package.json index dd3b691..3b2c8c8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hprose-html5", - "version": "2.0.32", + "version": "2.0.33", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/hprose/hprose-html5", "keywords": [ diff --git a/src/Client.js b/src/Client.js index 74e88fe..7f484d9 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Dec 5, 2016 * + * LastModified: Feb 14, 2017 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -225,7 +225,7 @@ } else { for (var n in m) { - setMethods(stub, obj[name], name + '_', n, m[n]); + setMethods(stub, obj[name], namespace + name + '_', n, m[n]); } } } diff --git a/src/CopyRight.js b/src/CopyRight.js index d4b629a..2ee54db 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.32 +// Hprose for HTML5 v2.0.33 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From 9d089991433a0ef60aceebbd41c0bb0fe861a4d1 Mon Sep 17 00:00:00 2001 From: Norman <332535694@qq.com> Date: Mon, 24 Apr 2017 08:46:25 +0800 Subject: [PATCH 76/86] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dws=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E5=9C=A8=E6=9C=8D=E5=8A=A1=E7=AB=AF=E9=87=8D=E5=90=AF?= =?UTF-8?q?=E5=90=8E=E6=97=A0=E6=B3=95=E9=87=8D=E8=BF=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WebSocketClient.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index 7725319..68d7a65 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -115,6 +115,7 @@ _futures[id] = future; if (context.timeout > 0) { future = future.timeout(context.timeout).catchError(function(e) { + ws = null; delete _futures[id]; --_count; throw e; From 48912e30048a927c40fc08f65a94867f61b058b3 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Thu, 4 May 2017 14:26:45 +0800 Subject: [PATCH 77/86] Update to 2.0.34 --- bower.json | 2 +- dist/hprose-html5.js | 4 ++-- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 3 ++- package.json | 2 +- src/CopyRight.js | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/bower.json b/bower.json index 65877a0..a8c7a2b 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "author": "Ma Bingyao ", "name": "hprose-html5", - "version": "2.0.33", + "version": "2.0.34", "description": "Hprose is a High Performance Remote Object Service Engine.", "keywords": [ "hprose", diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 7952127..5396f9a 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.33 +// Hprose for HTML5 v2.0.34 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -6,4 +6,4 @@ var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function O(e){if(T(e)||b(e))return A(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function j(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function E(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return T(e)||b(e)?A(e):o(e)}function A(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){s.reject(e)}}function i(e){e.done?s.resolve(e.value):("function"==typeof e.value?O(e.value):S(e.value)).then(t,r)}var a=function(){return this}();if("function"==typeof e){var u=te.call(arguments,1);e=e.apply(a,u)}if(!e||"function"!=typeof e.next)return o(e);var s=new n;return t(),s}function B(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?A.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function H(e,t,r){e?D(e,t,r):t.resolve(r)}function z(e,t,r){e?D(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,X="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;A.wrap=B,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:S},join:{value:v},any:{value:d},settle:{value:y},attempt:{value:w},run:{value:m},thunkify:{value:j},promisify:{value:E},co:{value:A},wrap:{value:B},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:R},map:{value:x},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();H(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?H(e,r,this._value):this._state===J?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=E,e.co=A,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},X||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor;if(!t)return"Object";var r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.toPromise(t(r,n,i,e))}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +for(o in e)a=e[o],o=o.toLowerCase(),"set-cookie"!==o&&"set-cookie2"!==o||("string"==typeof a&&(a=[a]),a.forEach(r))}function r(e){var t=n(e),r=t.host,o=t.path,a="https:"===t.protocol,u=[];for(var s in i)if(r.indexOf(s)>-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw j=null,delete T[r],--b,e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index f95918a..a11edd3 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index ea03766..bc9d7b4 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.33 +// Hprose for HTML5 v2.0.34 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -5748,6 +5748,7 @@ hprose.global = ( _futures[id] = future; if (context.timeout > 0) { future = future.timeout(context.timeout).catchError(function(e) { + ws = null; delete _futures[id]; --_count; throw e; diff --git a/package.json b/package.json index 3b2c8c8..088544e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hprose-html5", - "version": "2.0.33", + "version": "2.0.34", "description": "Hprose is a High Performance Remote Object Service Engine.", "homepage": "https://github.com/hprose/hprose-html5", "keywords": [ diff --git a/src/CopyRight.js b/src/CopyRight.js index 2ee54db..6ce660d 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.33 +// Hprose for HTML5 v2.0.34 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From 800f8b782f0ce3fe0e8a5cbb0d50525aa09e1114 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 20 Aug 2017 11:55:50 +0800 Subject: [PATCH 78/86] Fixed connection leak. --- src/WebSocketClient.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WebSocketClient.js b/src/WebSocketClient.js index 68d7a65..e95e409 100644 --- a/src/WebSocketClient.js +++ b/src/WebSocketClient.js @@ -12,7 +12,7 @@ * * * hprose websocket client for HTML5. * * * - * LastModified: Dec 2, 2016 * + * LastModified: Aug 20, 2017 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -115,9 +115,9 @@ _futures[id] = future; if (context.timeout > 0) { future = future.timeout(context.timeout).catchError(function(e) { - ws = null; delete _futures[id]; --_count; + close(); throw e; }, function(e) { From f1cc2649535036e96699e0930e284592171874a4 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 20 Aug 2017 11:55:54 +0800 Subject: [PATCH 79/86] Changed default subscribe timeout to 5 minutes. --- src/Client.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Client.js b/src/Client.js index 7f484d9..63cc3bf 100644 --- a/src/Client.js +++ b/src/Client.js @@ -12,7 +12,7 @@ * * * hprose client for HTML5. * * * - * LastModified: Feb 14, 2017 * + * LastModified: Aug 20, 2017 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -919,7 +919,8 @@ }); return; } - if (timeout === undefined) { timeout = _timeout; } + // Default subscribe timeout is 5 minutes. + if (timeout === undefined) { timeout = 300000; } var topic = getTopic(name, id); if (topic === null) { var cb = function() { From ada06f909782786605bbe0597cf8f4062c06f3f0 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Sun, 20 Aug 2017 11:57:23 +0800 Subject: [PATCH 80/86] Update to v2.0.35 --- dist/hprose-html5.js | 6 +++--- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 11 ++++++----- src/CopyRight.js | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index 5396f9a..a21b35a 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -1,9 +1,9 @@ -// Hprose for HTML5 v2.0.34 +// Hprose for HTML5 v2.0.35 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: // https://github.com/hprose/hprose-html5 var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function O(e){if(T(e)||b(e))return A(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function j(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function E(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return T(e)||b(e)?A(e):o(e)}function A(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){s.reject(e)}}function i(e){e.done?s.resolve(e.value):("function"==typeof e.value?O(e.value):S(e.value)).then(t,r)}var a=function(){return this}();if("function"==typeof e){var u=te.call(arguments,1);e=e.apply(a,u)}if(!e||"function"!=typeof e.next)return o(e);var s=new n;return t(),s}function B(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?A.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function H(e,t,r){e?D(e,t,r):t.resolve(r)}function z(e,t,r){e?D(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,X="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;A.wrap=B,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:S},join:{value:v},any:{value:d},settle:{value:y},attempt:{value:w},run:{value:m},thunkify:{value:j},promisify:{value:E},co:{value:A},wrap:{value:B},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:R},map:{value:x},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();H(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?H(e,r,this._value):this._state===J?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=E,e.co=A,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},X||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ -TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor;if(!t)return"Object";var r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.toPromise(t(r,n,i,e))}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw j=null,delete T[r],--b,e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor;if(!t)return"Object";var r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.toPromise(t(r,n,i,e))}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,w(),e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file diff --git a/dist/hprose-html5.min.js b/dist/hprose-html5.min.js index a11edd3..1a24796 100644 --- a/dist/hprose-html5.min.js +++ b/dist/hprose-html5.min.js @@ -1 +1 @@ -eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file +eval(function(n){"use strict";function r(n){var r=[];return r[n-1]=void 0,r}function u(n,r){return f(n[0]+r[0],n[1]+r[1])}function t(n,r){var u,t;return n[0]==r[0]&&n[1]==r[1]?0:(u=0>n[1],t=0>r[1],u&&!t?-1:!u&&t?1:a(n,r)[1]<0?-1:1)}function f(n,r){var u,t;for(r%=0x10000000000000000,n%=0x10000000000000000,u=r%un,t=Math.floor(n/un)*un,r=r-u+t,n=n-t+u;0>n;)n+=un,r-=un;for(;n>4294967295;)n-=un,r+=un;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;-0x8000000000000000>r;)r+=0x10000000000000000;return[n,r]}function i(n){return n>=0?[n,0]:[n+un,-un]}function c(n){return n[0]>=2147483648?~~Math.max(Math.min(n[0]-un,2147483647),-2147483648):~~Math.max(Math.min(n[0],2147483647),-2147483648)}function a(n,r){return f(n[0]-r[0],n[1]-r[1])}function o(n,r){return n.ab=r,n.cb=0,n.O=r.length,n}function e(n){return n.cb>=n.O?-1:255&n.ab[n.cb++]}function v(n){return n.ab=r(32),n.O=0,n}function s(n){var r=n.ab;return r.length=n.O,r}function g(n,r,u,t){l(r,u,n.ab,n.O,t),n.O+=t}function l(n,r,u,t,f){for(var i=0;f>i;++i)u[t+i]=n[r+i]}function C(n,r,u){var t,f,c,a,o="",v=[];for(f=0;5>f;++f){if(c=e(r),-1==c)throw Error("truncated input");v[f]=c<<24>>24}if(t=F({}),!V(t,v))throw Error("corrupted input");for(f=0;64>f;f+=8){if(c=e(r),-1==c)throw Error("truncated input");c=c.toString(16),1==c.length&&(c="0"+c),o=c+""+o}/^0+$|^f+$/i.test(o)?n.M=tn:(a=parseInt(o,16),n.M=a>4294967295?tn:i(a)),n.S=M(t,r,u,n.M)}function z(n,r){return n.Y=v({}),C(n,o({},r),n.Y),n}function p(n,r,u){var t=n.y-r-1;for(0>t&&(t+=n.c);0!=u;--u)t>=n.c&&(t=0),n.x[n.y++]=n.x[t++],n.y>=n.c&&N(n)}function x(n,u){(null==n.x||n.c!=u)&&(n.x=r(u)),n.c=u,n.y=0,n.w=0}function N(n){var r=n.y-n.w;r&&(g(n.T,n.x,n.w,r),n.y>=n.c&&(n.y=0),n.w=n.y)}function d(n,r){var u=n.y-r-1;return 0>u&&(u+=n.c),n.x[u]}function J(n,r){n.x[n.y++]=r,n.y>=n.c&&N(n)}function L(n){N(n),n.T=null}function j(n){return n-=2,4>n?n:3}function B(n){return 4>n?0:10>n?n-3:n-6}function b(n,r){return n.h=r,n.bb=null,n.V=1,n}function k(n){if(!n.V)throw Error("bad state");if(n.bb)throw Error("No encoding");return h(n),n.V}function h(n){var r=U(n.h);if(-1==r)throw Error("corrupted input");n.$=tn,n.Z=n.h.d,(r||t(n.h.U,fn)>=0&&t(n.h.d,n.h.U)>=0)&&(N(n.h.b),L(n.h.b),n.h.a.K=null,n.V=0)}function M(n,r,u,t){return n.a.K=r,L(n.b),n.b.T=u,A(n),n.f=0,n.l=0,n.Q=0,n.R=0,n._=0,n.U=t,n.d=fn,n.G=0,b({},n)}function U(n){var r,f,a,o,e,v;if(v=c(n.d)&n.P,Q(n.a,n.t,(n.f<<4)+v)){if(Q(n.a,n.E,n.f))a=0,Q(n.a,n.r,n.f)?(Q(n.a,n.u,n.f)?(Q(n.a,n.s,n.f)?(f=n._,n._=n.R):f=n.R,n.R=n.Q):f=n.Q,n.Q=n.l,n.l=f):Q(n.a,n.o,(n.f<<4)+v)||(n.f=7>n.f?9:11,a=1),a||(a=q(n.n,n.a,v)+2,n.f=7>n.f?8:11);else if(n._=n.R,n.R=n.Q,n.Q=n.l,a=2+q(n.D,n.a,v),n.f=7>n.f?7:10,e=S(n.k[j(a)],n.a),e>=4){if(o=(e>>1)-1,n.l=(2|1&e)<e)n.l+=X(n.J,n.l-e-1,n.a,o);else if(n.l+=T(n.a,o-4)<<4,n.l+=Y(n.q,n.a),0>n.l)return-1==n.l?1:-1}else n.l=e;if(t(i(n.l),n.d)>=0||n.l>=n.m)return-1;p(n.b,n.l,a),n.d=u(n.d,i(a)),n.G=d(n.b,0)}else r=D(n.j,c(n.d),n.G),n.G=7>n.f?E(r,n.a):R(r,n.a,d(n.b,n.l)),J(n.b,n.G),n.f=B(n.f),n.d=u(n.d,cn);return 0}function F(n){n.b={},n.a={},n.t=r(192),n.E=r(12),n.r=r(12),n.u=r(12),n.s=r(12),n.o=r(192),n.k=r(4),n.J=r(114),n.q=H({},4),n.D=m({}),n.n=m({}),n.j={};for(var u=0;4>u;++u)n.k[u]=H({},6);return n}function A(n){n.b.w=0,n.b.y=0,I(n.t),I(n.o),I(n.E),I(n.r),I(n.u),I(n.s),I(n.J),Z(n.j);for(var r=0;4>r;++r)I(n.k[r].z);w(n.D),w(n.n),I(n.q.z),K(n.a)}function V(n,r){var u,t,f,i,c,a,o;if(5>r.length)return 0;for(o=255&r[0],f=o%9,a=~~(o/9),i=a%5,c=~~(a/5),u=0,t=0;4>t;++t)u+=(255&r[1+t])<<8*t;return u>99999999||!W(n,f,i,c)?0:G(n,u)}function G(n,r){return 0>r?0:(n.A!=r&&(n.A=r,n.m=Math.max(n.A,1),x(n.b,Math.max(n.m,4096))),1)}function W(n,r,u,t){if(r>8||u>4||t>4)return 0;P(n.j,u,r);var f=1<n.e;++n.e)n.I[n.e]=H({},3),n.H[n.e]=H({},3)}function q(n,r,u){if(!Q(r,n.N,0))return S(n.I[u],r);var t=8;return t+=Q(r,n.N,1)?8+S(n.L,r):S(n.H[u],r)}function m(n){return n.N=r(2),n.I=r(16),n.H=r(16),n.L=H({},8),n.e=0,n}function w(n){I(n.N);for(var r=0;n.e>r;++r)I(n.I[r].z),I(n.H[r].z);I(n.L.z)}function P(n,u,t){var f,i;if(null==n.F||n.g!=t||n.B!=u)for(n.B=u,n.X=(1<f;++f)n.F[f]=y({})}function D(n,r,u){return n.F[((r&n.X)<>>8-n.g)]}function Z(n){var r,u;for(u=1<r;++r)I(n.F[r].v)}function E(n,r){var u=1;do u=u<<1|Q(r,n.v,u);while(256>u);return u<<24>>24}function R(n,r,u){var t,f,i=1;do if(f=u>>7&1,u<<=1,t=Q(r,n.v,(1+f<<8)+i),i=i<<1|t,f!=t){for(;256>i;)i=i<<1|Q(r,n.v,i);break}while(256>i);return i<<24>>24}function y(n){return n.v=r(768),n}function H(n,u){return n.C=u,n.z=r(1<t;++t)u=Q(r,n.z,f),f<<=1,f+=u,i|=u<i;++i)f=Q(u,n,r+c),c<<=1,c+=f,a|=f<>>11)*f,(-2147483648^t)>(-2147483648^n.p)?(n.i=t,r[u]=f+(2048-f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),0):(n.i-=t,n.p-=t,r[u]=f-(f>>>5)<<16>>16,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8),1)}function T(n,r){var u,t,f=0;for(u=r;0!=u;--u)n.i>>>=1,t=n.p-n.i>>>31,n.p-=n.i&t-1,f=f<<1|1-t,-16777216&n.i||(n.p=n.p<<8|e(n.K),n.i<<=8);return f}function K(n){n.p=0,n.i=-1;for(var r=0;5>r;++r)n.p=n.p<<8|e(n.K)}function I(n){for(var r=n.length-1;r>=0;--r)n[r]=1024}function _(n){for(var r,u,t,f=0,i=0,c=n.length,a=[],o=[];c>f;++f,++i){if(r=255&n[f],128&r)if(192==(224&r)){if(f+1>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;o[i]=(31&r)<<6|63&u}else{if(224!=(240&r))return n;if(f+2>=n.length)return n;if(u=255&n[++f],128!=(192&u))return n;if(t=255&n[++f],128!=(192&t))return n;o[i]=(15&r)<<12|(63&u)<<6|63&t}else{if(!r)return n;o[i]=r}65535==i&&(a.push(String.fromCharCode.apply(String,o)),i=-1)}return i>0&&(o.length=i,a.push(String.fromCharCode.apply(String,o))),a.join("")}function $(n){return n>64&&91>n?n-65:n>96&&123>n?n-71:n>47&&58>n?n+4:43===n?62:47===n?63:0}function nn(r){for(var u,t,f=r.length,i=3*f+1>>>2,c=new Array(i),a=0,o=0,e=0;f>e;e++)if(t=3&e,a|=$(r.charCodeAt(e))<<18-6*t,3===t||f-e===1){for(u=0;3>u&&i>o;u++,o++)c[o]=a>>>(16>>>u&24)&255;a=0}return c}function rn(n){n=nn(n);var r={};for(r.d=z({},n);k(r.d.S););return _(s(r.d.Y))}var un=4294967296,tn=[4294967295,-un],fn=[0,0],cn=[1,0];return rn}(this)("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")); \ No newline at end of file diff --git a/dist/hprose-html5.src.js b/dist/hprose-html5.src.js index bc9d7b4..f490252 100644 --- a/dist/hprose-html5.src.js +++ b/dist/hprose-html5.src.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.34 +// Hprose for HTML5 v2.0.35 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: @@ -4064,7 +4064,7 @@ hprose.global = ( * * * hprose client for HTML5. * * * - * LastModified: Feb 14, 2017 * + * LastModified: Aug 20, 2017 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -4971,7 +4971,8 @@ hprose.global = ( }); return; } - if (timeout === undefined) { timeout = _timeout; } + // Default subscribe timeout is 5 minutes. + if (timeout === undefined) { timeout = 300000; } var topic = getTopic(name, id); if (topic === null) { var cb = function() { @@ -5645,7 +5646,7 @@ hprose.global = ( * * * hprose websocket client for HTML5. * * * - * LastModified: Dec 2, 2016 * + * LastModified: Aug 20, 2017 * * Author: Ma Bingyao * * * \**********************************************************/ @@ -5748,9 +5749,9 @@ hprose.global = ( _futures[id] = future; if (context.timeout > 0) { future = future.timeout(context.timeout).catchError(function(e) { - ws = null; delete _futures[id]; --_count; + close(); throw e; }, function(e) { diff --git a/src/CopyRight.js b/src/CopyRight.js index 6ce660d..893b0ea 100644 --- a/src/CopyRight.js +++ b/src/CopyRight.js @@ -1,4 +1,4 @@ -// Hprose for HTML5 v2.0.34 +// Hprose for HTML5 v2.0.35 // Copyright (c) 2008-2016 http://hprose.com // Hprose is freely distributable under the MIT license. // For all details and documentation: From cd6f9f9a2d7d8169992ebf8647612388da6d1815 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 6 Feb 2018 14:56:34 +0800 Subject: [PATCH 81/86] Happy new year. --- LICENSE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.md b/LICENSE.md index 02bb1a1..70a0e7b 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2008-2016 http://hprose.com +Copyright (c) 2008-2018 http://hprose.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From f8634fe4ccce93de36b295afa200f0215ca84448 Mon Sep 17 00:00:00 2001 From: Ma Bingyao Date: Tue, 6 Feb 2018 14:57:53 +0800 Subject: [PATCH 82/86] Added namespace support for auto fetching the methods. --- dist/hprose-html5.js | 6 +++--- dist/hprose-html5.min.js | 2 +- dist/hprose-html5.src.js | 25 +++++++++++++++++++++++-- src/Client.js | 25 +++++++++++++++++++++++-- test/test.html | 2 +- test/test_sea.html | 2 +- 6 files changed, 52 insertions(+), 10 deletions(-) diff --git a/dist/hprose-html5.js b/dist/hprose-html5.js index a21b35a..fc02976 100644 --- a/dist/hprose-html5.js +++ b/dist/hprose-html5.js @@ -4,6 +4,6 @@ // For all details and documentation: // https://github.com/hprose/hprose-html5 -var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i,n<0&&(n=0));for(var o;n>>0,o=arguments[1],a=0;a>>0,o=arguments[1],a=0;a>>0,i=arguments[1],o=i>>0,a=o<0?Math.max(n+o,0):Math.min(o,n),u=arguments[2],s=u===t?n:u>>0,c=s<0?Math.max(n+s,0):Math.min(s,n);a>>0,o=e>>0,a=o<0?Math.max(i+o,0):Math.min(o,i),u=r>>0,s=u<0?Math.max(i+u,0):Math.min(u,i),c=arguments[2],f=c===t?i:c>>0,l=f<0?Math.max(i+f,0):Math.min(f,i),h=Math.min(l-s,i-a),p=1;for(s0;)s in n?n[a]=n[s]:delete n[a],s+=p,a+=p,h--;return n}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,r=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},n=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},i=Math.pow(2,53)-1,o=function(e){var t=n(e);return Math.min(Math.max(t,0),i)};return function(e){var n=this,i=Object(e);if(null===e||e===t)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,u=arguments.length>1?arguments[1]:void t;if("undefined"!=typeof u){if(!r(u))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(a=arguments[2])}for(var s,c=o(i.length),f=r(n)?Object(new n(c)):new Array(c),l=0;lr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return n!==-1&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1===(1&e)&&(r+=t),e>>>=1,0!==e;)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())});return r.observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write(''),t.document.close();var r=[];return window.addEventListener("message",function(){for(;r.length>0;)i(r.shift())}),function(){var e=o(arguments);return r.push(e),t.postMessage(1,"*"),e}},s.readyStateChange=function(){var e=a.documentElement;return function(){var t=o(arguments),r=a.createElement("script");return r.onreadystatechange=function(){i(t),r.onreadystatechange=null,e.removeChild(r),r=null},e.appendChild(r),t}};var l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,s.setTimeout=function(){return function(){var e=o(arguments);return l.setTimeout(r(i,e),0),e}},"undefined"==typeof e.process||"[object process]"!==Object.prototype.toString.call(e.process)||e.process.browser?a&&"onreadystatechange"in a.createElement("script")?l.setImmediate=s.readyStateChange():a&&u?l.setImmediate=s.mutationObserver():e.MessageChannel?l.setImmediate=s.messageChannel():a&&"postMessage"in e&&"addEventListener"in e?l.setImmediate=s.postMessage():l.setImmediate=s.setTimeout():l.setImmediate=s.nextTick(),l.clearImmediate=n}}(hprose.global),function(e,t,r){"use strict";function n(e){var t=this;Object.defineProperties(this,{_subscribers:{value:[]},resolve:{value:this.resolve.bind(this)},reject:{value:this.reject.bind(this)}}),"function"==typeof e&&$(function(){try{t.resolve(e())}catch(e){t.reject(e)}})}function i(e){return e instanceof n}function o(e){return i(e)?e:c(e)}function a(e){return"function"==typeof e.then}function u(e,t){var r="function"==typeof t?t:function(){return t},i=new n;return K(function(){try{i.resolve(r())}catch(e){i.reject(e)}},e),i}function s(e){var t=new n;return t.reject(e),t}function c(e){var t=new n;return t.resolve(e),t}function f(e){try{var t=e();return c(t)}catch(e){return s(e)}}function l(e){var t=new n;return e(t.resolve,t.reject),t}function h(e){var t=0;return ee.call(e,function(){++t}),t}function p(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){o(e).then(function(e){i[t]=e,0===--r&&a.resolve(i)},a.reject)}),a})}function v(){return p(arguments)}function g(e){return o(e).then(function(e){var t=new n;return ee.call(e,function(e){o(e).fill(t)}),t})}function d(e){return o(e).then(function(e){var t=e.length,r=h(e);if(0===r)throw new RangeError("any(): array must not be empty");var i=new Array(t),a=new n;return ee.call(e,function(e,t){o(e).then(a.resolve,function(e){i[t]=e,0===--r&&a.reject(i)})}),a})}function y(e){return o(e).then(function(e){var t=e.length,r=h(e),i=new Array(t);if(0===r)return i;var a=new n;return ee.call(e,function(e,t){var n=o(e);n.complete(function(){i[t]=n.inspect(),0===--r&&a.resolve(i)})}),a})}function w(e){var t=function(){return this}(),r=te.call(arguments,1);return p(r).then(function(r){return e.apply(t,r)})}function m(e,t){var r=te.call(arguments,2);return p(r).then(function(r){return e.apply(t,r)})}function b(e){return!!e&&("function"==typeof e.next&&"function"==typeof e.throw)}function T(e){if(!e)return!1;var t=e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName||b(t.prototype))}function _(e){return function(t,n){return t instanceof Error?e.reject(t):arguments.length<2?e.resolve(t):(n=null===t||t===r?te.call(arguments,1):te.call(arguments,0),void(1==n.length?e.resolve(n[0]):e.resolve(n)))}}function O(e){if(T(e)||b(e))return A(e);var t=function(){return this}(),r=new n;return e.call(t,_(r)),r}function j(e){return function(){var t=te.call(arguments,0),r=this,i=new n;t.push(function(){r=this,i.resolve(arguments)});try{e.apply(this,t)}catch(e){i.resolve([e])}return function(e){i.then(function(t){e.apply(r,t)})}}}function E(e){return function(){var t=te.call(arguments,0),r=new n;t.push(_(r));try{e.apply(this,t)}catch(e){r.reject(e)}return r}}function S(e){return T(e)||b(e)?A(e):o(e)}function A(e){function t(t){try{i(e.next(t))}catch(e){s.reject(e)}}function r(t){try{i(e.throw(t))}catch(e){s.reject(e)}}function i(e){e.done?s.resolve(e.value):("function"==typeof e.value?O(e.value):S(e.value)).then(t,r)}var a=function(){return this}();if("function"==typeof e){var u=te.call(arguments,1);e=e.apply(a,u)}if(!e||"function"!=typeof e.next)return o(e);var s=new n;return t(),s}function B(e,t){return function(){return t=t||this,p(arguments).then(function(r){var n=e.apply(t,r);return T(n)||b(n)?A.call(t,n):n})}}function k(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.forEach(t,r)})}function C(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.every(t,r)})}function I(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.some(t,r)})}function R(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.filter(t,r)})}function x(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.map(t,r)})}function P(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduce(t,r)})}):p(e).then(function(e){return e.reduce(t)})}function M(e,t,r){return arguments.length>2?p(e).then(function(e){return o(r).then(function(r){return e.reduceRight(t,r)})}):p(e).then(function(e){return e.reduceRight(t)})}function U(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.indexOf(t,r)})})}function L(e,t,n){return p(e).then(function(e){return o(t).then(function(t){return n===r&&(n=e.length-1),e.lastIndexOf(t,n)})})}function N(e,t,r){return p(e).then(function(e){return o(t).then(function(t){return e.includes(t,r)})})}function F(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.find(t,r)})}function W(e,t,r){return r=r||function(){return this}(),p(e).then(function(e){return e.findIndex(t,r)})}function D(e,t,r){$(function(){try{var n=e(r);t.resolve(n)}catch(e){t.reject(e)}})}function H(e,t,r){e?D(e,t,r):t.resolve(r)}function z(e,t,r){e?D(e,t,r):t.reject(r)}function q(){var e=new n;Object.defineProperties(this,{future:{value:e},complete:{value:e.resolve},completeError:{value:e.reject},isCompleted:{get:function(){return e._state!==Q}}})}function G(e){n.call(this),e(this.resolve,this.reject)}var Q=0,Y=1,J=2,X="Promise"in t,$=t.setImmediate,K=t.setTimeout,V=t.clearTimeout,Z=t.TimeoutError,ee=Array.prototype.forEach,te=Array.prototype.slice;A.wrap=B,Object.defineProperties(n,{delayed:{value:u},error:{value:s},sync:{value:f},value:{value:c},all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s},promise:{value:l},isFuture:{value:i},toFuture:{value:o},isPromise:{value:a},toPromise:{value:S},join:{value:v},any:{value:d},settle:{value:y},attempt:{value:w},run:{value:m},thunkify:{value:j},promisify:{value:E},co:{value:A},wrap:{value:B},forEach:{value:k},every:{value:C},some:{value:I},filter:{value:R},map:{value:x},reduce:{value:P},reduceRight:{value:M},indexOf:{value:U},lastIndexOf:{value:L},includes:{value:N},find:{value:F},findIndex:{value:W}}),Object.defineProperties(n.prototype,{_value:{writable:!0},_reason:{writable:!0},_state:{value:Q,writable:!0},resolve:{value:function(e){if(e===this)return void this.reject(new TypeError("Self resolution"));if(i(e))return void e.fill(this);if(null!==e&&"object"==typeof e||"function"==typeof e){var t;try{t=e.then}catch(e){return void this.reject(e)}if("function"==typeof t){var r=!0;try{var n=this;return void t.call(e,function(e){r&&(r=!1,n.resolve(e))},function(e){r&&(r=!1,n.reject(e))})}catch(e){r&&(r=!1,this.reject(e))}return}}if(this._state===Q){this._state=Y,this._value=e;for(var o=this._subscribers;o.length>0;){var a=o.shift();H(a.onfulfill,a.next,e)}}}},reject:{value:function(e){if(this._state===Q){this._state=J,this._reason=e;for(var t=this._subscribers;t.length>0;){var r=t.shift();z(r.onreject,r.next,e)}}}},then:{value:function(e,t){"function"!=typeof e&&(e=null),"function"!=typeof t&&(t=null);var r=new n;return this._state===Y?H(e,r,this._value):this._state===J?z(t,r,this._reason):this._subscribers.push({onfulfill:e,onreject:t,next:r}),r}},done:{value:function(e,t){this.then(e,t).then(null,function(e){$(function(){throw e})})}},inspect:{value:function(){switch(this._state){case Q:return{state:"pending"};case Y:return{state:"fulfilled",value:this._value};case J:return{state:"rejected",reason:this._reason}}}},catchError:{value:function(e,t){if("function"==typeof t){var r=this;return this.catch(function(n){if(t(n))return r.catch(e);throw n})}return this.catch(e)}},catch:{value:function(e){return this.then(null,e)}},fail:{value:function(e){this.done(null,e)}},whenComplete:{value:function(e){return this.then(function(t){return e(),t},function(t){throw e(),t})}},complete:{value:function(e){return e=e||function(e){return e},this.then(e,e)}},always:{value:function(e){this.done(e,e)}},fill:{value:function(e){this.then(e.resolve,e.reject)}},timeout:{value:function(e,t){var r=new n,i=K(function(){r.reject(t||new Z("timeout"))},e);return this.whenComplete(function(){V(i)}).fill(r),r}},delay:{value:function(e){var t=new n;return this.then(function(r){K(function(){t.resolve(r)},e)},t.reject),t}},tap:{value:function(e,t){return this.then(function(r){return e.call(t,r),r})}},spread:{value:function(e,t){return this.then(function(r){return e.apply(t,r)})}},get:{value:function(e){return this.then(function(t){return t[e]})}},set:{value:function(e,t){return this.then(function(r){return r[e]=t,r})}},apply:{value:function(e,t){return t=t||[],this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},call:{value:function(e){var t=te.call(arguments,1);return this.then(function(r){return p(t).then(function(t){return r[e].apply(r,t)})})}},bind:{value:function(e){var t=te.call(arguments);{if(!Array.isArray(e)){t.shift();var r=this;return Object.defineProperty(this,e,{value:function(){var n=te.call(arguments);return r.then(function(r){return p(t.concat(n)).then(function(t){return r[e].apply(r,t)})})}}),this}for(var n=0,i=e.length;n1?P(this,e,t):P(this,e)}},reduceRight:{value:function(e,t){return arguments.length>1?M(this,e,t):M(this,e)}},indexOf:{value:function(e,t){return U(this,e,t)}},lastIndexOf:{value:function(e,t){return L(this,e,t)}},includes:{value:function(e,t){return N(this,e,t)}},find:{value:function(e,t){return F(this,e,t)}},findIndex:{value:function(e,t){return W(this,e,t)}}}),e.Future=n,e.thunkify=j,e.promisify=E,e.co=A,e.co.wrap=e.wrap=B,e.Completer=q,e.resolved=c,e.rejected=s,e.deferred=function(){var e=new n;return Object.create(null,{promise:{value:e},resolve:{value:e.resolve},reject:{value:e.reject}})},X||(G.prototype=Object.create(n.prototype),G.prototype.constructor=n,Object.defineProperties(G,{all:{value:p},race:{value:g},resolve:{value:c},reject:{value:s}}),t.Promise=G)}(hprose,hprose.global),function(e,t){"use strict";function r(e,t,r){return e[t++]=r>>>24&255,e[t++]=r>>>16&255,e[t++]=r>>>8&255,e[t++]=255&r,t}function n(e,t,r){return e[t++]=255&r,e[t++]=r>>>8&255,e[t++]=r>>>16&255,e[t++]=r>>>24&255,t}function i(e,t,r){for(var n=r.length,i=0;i>6,e[t++]=128|63&o;else{if(!(o<55296||o>57343)){if(i+1>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|63&u,++i;continue}}throw new Error("Malformed string")}e[t++]=224|o>>12,e[t++]=128|o>>6&63,e[t++]=128|63&o}}return t}function o(e,t){for(var r=new Array(t),n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r[n]=a;break;case 12:case 13:if(i>10&1023|55296,r[n]=1023&u|56320;break}throw new Error("Character outside valid Unicode range: 0x"+u.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+a.toString(16))}}return n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[i]=u;break;case 12:case 13:if(o>10&1023|55296,n[i]=1023&s|56320;break}throw new Error("Character outside valid Unicode range: 0x"+s.toString(16))}throw new Error("Unfinished UTF-8 octet sequence");default:throw new Error("Bad UTF-8 encoding 0x"+u.toString(16))}if(i>=32766){var c=i+1;n.length=c,r.push(String.fromCharCode.apply(String,n)),t-=c,i=-1}}return i>0&&(n.length=i,r.push(String.fromCharCode.apply(String,n))),[r.join(""),o]}function u(e,r){return(r===t||null===r||r<0)&&(r=e.length),0===r?["",0]:r<65535?o(e,r):a(e,r)}function s(e,r){if(r===t&&(r=e.length),0===r)return[p,0];for(var n=0,i=0,o=e.length;n>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break;case 12:case 13:if(i>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function f(){var e=arguments;switch(e.length){case 1:switch(e[0].constructor){case Uint8Array:this._bytes=e[0],this._length=e[0].length;break;case f:this._bytes=e[0].toBytes(),this._length=e[0].length;break;case String:this.writeString(e[0]);break;case Number:this._bytes=new Uint8Array(e[0]);break;default:this._bytes=new Uint8Array(e[0]),this._length=this._bytes.length}break;case 2:this._bytes=new Uint8Array(e[0],e[1]),this._length=e[1];break;case 3:this._bytes=new Uint8Array(e[0],e[1],e[2]),this._length=e[2]}this.mark()}function l(e){if(0===e.length)return"";switch(e.constructor){case String:return e;case f:e=e.bytes;case ArrayBuffer:e=new Uint8Array(e);case Uint8Array:return u(e,e.length)[0];default:return String.fromCharCode.apply(String,e)}}var h=e.toBinaryString,p=new Uint8Array(0),v=1024;Object.defineProperties(f.prototype,{_bytes:{value:null,writable:!0},_length:{value:0,writable:!0},_wmark:{value:0,writable:!0},_off:{value:0,writable:!0},_rmark:{value:0,writable:!0},_grow:{value:function(e){var t=this._bytes,r=this._length+e,n=c(r);if(t){if(n*=2,n>t.length){var i=new Uint8Array(n);i.set(t),this._bytes=i}}else n=Math.max(n,v),this._bytes=new Uint8Array(n)}},length:{get:function(){return this._length}},capacity:{get:function(){return this._bytes?this._bytes.length:0}},position:{get:function(){return this._off}},bytes:{get:function(){return null===this._bytes?p:this._bytes.subarray(0,this._length)}},buffer:{get:function(){if(null===this._bytes)return p.buffer;if(this._bytes.buffer.slice)return this._bytes.buffer.slice(0,this._length);var e=new Uint8Array(this._length);return e.set(this._bytes.subarray(0,this._length)),e.buffer}},mark:{value:function(){this._wmark=this._length,this._rmark=this._off}},reset:{value:function(){this._length=this._wmark,this._off=this._rmark}},clear:{value:function(){this._bytes=null,this._length=0,this._wmark=0,this._off=0,this._rmark=0}},writeByte:{value:function(e){this._grow(1),this._bytes[this._length++]=e}},writeInt32BE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=r(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32BE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=r(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},writeInt32LE:{value:function(e){if(e===(0|e)&&e<=2147483647)return this._grow(4),void(this._length=n(this._bytes,this._length,e));throw new TypeError("value is out of bounds")}},writeUInt32LE:{value:function(e){if((2147483647&e)+2147483648===e&&e>=0)return this._grow(4),void(this._length=n(this._bytes,this._length,0|e));throw new TypeError("value is out of bounds")}},write:{value:function(e){var t=e.byteLength||e.length;if(0!==t){this._grow(t);var r=this._bytes,n=this._length;switch(e.constructor){case ArrayBuffer:r.set(new Uint8Array(e),n);break;case Uint8Array:r.set(e,n);break;case f:r.set(e.bytes,n);break;default:for(var i=0;ithis._length&&(e=this._length-this._off),0===e?p:this._bytes.subarray(this._off,this._off+=e)}},skip:{value:function(e){return this._off+e>this._length?(e=this._length-this._off,this._off=this._length):this._off+=e,e}},readBytes:{value:function(e){var t,r=Array.indexOf(this._bytes,e,this._off);return r===-1?(t=this._bytes.subarray(this._off,this._length),this._off=this._length):(t=this._bytes.subarray(this._off,r+1),this._off=r+1),t}},readUntil:{value:function(e){var t=Array.indexOf(this._bytes,e,this._off),r="";return t===this._off?this._off++:t===-1?(r=u(this._bytes.subarray(this._off,this._length))[0],this._off=this._length):(r=u(this._bytes.subarray(this._off,t))[0],this._off=t+1),r}},readAsciiString:{value:function(e){return this._off+e>this._length&&(e=this._length-this._off),0===e?"":h(this._bytes.subarray(this._off,this._off+=e))}},readStringAsBytes:{value:function(e){var t=s(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},readString:{value:function(e){var t=u(this._bytes.subarray(this._off,this._length),e);return this._off+=t[1],t[0]}},takeBytes:{value:function(){var e=this.bytes;return this.clear(),e}},toBytes:{value:function(){return new Uint8Array(this.bytes)}},toString:{value:function(){return u(this.bytes,this._length)[0]}},clone:{value:function(){return new f(this.toBytes())}},trunc:{value:function(){this._bytes=this._bytes.subarray(this._off,this._length),this._length=this._bytes.length,this._off=0,this._wmark=0,this._rmark=0}}}),Object.defineProperty(f,"toString",{value:l}),e.BytesIO=f}(hprose),function(e){"use strict";e.Tags={ -TagInteger:105,TagLong:108,TagDouble:100,TagNull:110,TagEmpty:101,TagTrue:116,TagFalse:102,TagNaN:78,TagInfinity:73,TagDate:68,TagTime:84,TagUTC:90,TagBytes:98,TagUTF8Char:117,TagString:115,TagGuid:103,TagList:97,TagMap:109,TagClass:99,TagObject:111,TagRef:114,TagPos:43,TagNeg:45,TagSemicolon:59,TagOpenbrace:123,TagClosebrace:125,TagQuote:34,TagPoint:46,TagFunctions:70,TagCall:67,TagResult:82,TagArgument:65,TagError:69,TagEnd:122}}(hprose),function(e,t){"use strict";function r(e,t){u.set(e,t),a[t]=e}function n(e){return u.get(e)}function i(e){return a[e]}var o=t.WeakMap,a=Object.create(null),u=new o;e.ClassManager=Object.create(null,{register:{value:r},getClassAlias:{value:n},getClass:{value:i}}),e.register=r,r(Object,"Object")}(hprose,hprose.global),function(e,t,r){"use strict";function n(e){var t=e.constructor;if(!t)return"Object";var r=A.getClassAlias(t);if(r)return r;if(t.name)r=t.name;else{var n=t.toString();if(r=n.substr(0,n.indexOf("(")).replace(/(^\s*function\s*)|(\s*$)/gi,""),""===r||"Object"===r)return"function"==typeof e.getClassName?e.getClassName():"Object"}return"Object"!==r&&A.register(t,r),r}function i(e){Object.defineProperties(this,{_stream:{value:e},_ref:{value:new j,writable:!0}})}function o(e){return new i(e)}function a(e,t){Object.defineProperties(this,{stream:{value:e},_classref:{value:Object.create(null),writable:!0},_fieldsref:{value:[],writable:!0},_refer:{value:t?B:o(e)}})}function u(e,t){var i=e.stream;if(t===r||null===t)return void i.writeByte(S.TagNull);switch(t.constructor){case Function:return void i.writeByte(S.TagNull);case Number:return void s(e,t);case Boolean:return void l(e,t);case String:switch(t.length){case 0:return void i.writeByte(S.TagEmpty);case 1:return i.writeByte(S.TagUTF8Char),void i.writeString(t)}return void e.writeStringWithRef(t);case Date:return void e.writeDateWithRef(t);case j:return void e.writeMapWithRef(t);case ArrayBuffer:case Uint8Array:case E:return void e.writeBytesWithRef(t);case Int8Array:case Int16Array:case Int32Array:case Uint16Array:case Uint32Array:return void w(e,t);case Float32Array:case Float64Array:return void m(e,t);default:if(Array.isArray(t))e.writeListWithRef(t);else{var o=n(t);"Object"===o?e.writeMapWithRef(t):e.writeObjectWithRef(t)}}}function s(e,t){var r=e.stream;t=t.valueOf(),t===(0|t)?0<=t&&t<=9?r.writeByte(t+48):(r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function c(e,t){var r=e.stream;0<=t&&t<=9?r.writeByte(t+48):(t<-2147483648||t>2147483647?r.writeByte(S.TagLong):r.writeByte(S.TagInteger),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon))}function f(e,t){var r=e.stream;isNaN(t)?r.writeByte(S.TagNaN):isFinite(t)?(r.writeByte(S.TagDouble),r.writeAsciiString(""+t),r.writeByte(S.TagSemicolon)):(r.writeByte(S.TagInfinity),r.writeByte(t>0?S.TagPos:S.TagNeg))}function l(e,t){e.stream.writeByte(t.valueOf()?S.TagTrue:S.TagFalse)}function h(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getUTCFullYear()).slice(-4),i=("00"+(t.getUTCMonth()+1)).slice(-2),o=("00"+t.getUTCDate()).slice(-2),a=("00"+t.getUTCHours()).slice(-2),u=("00"+t.getUTCMinutes()).slice(-2),s=("00"+t.getUTCSeconds()).slice(-2),c=("000"+t.getUTCMilliseconds()).slice(-3);r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c)),r.writeByte(S.TagUTC)}function p(e,t){e._refer.set(t);var r=e.stream,n=("0000"+t.getFullYear()).slice(-4),i=("00"+(t.getMonth()+1)).slice(-2),o=("00"+t.getDate()).slice(-2),a=("00"+t.getHours()).slice(-2),u=("00"+t.getMinutes()).slice(-2),s=("00"+t.getSeconds()).slice(-2),c=("000"+t.getMilliseconds()).slice(-3);"00"===a&&"00"===u&&"00"===s&&"000"===c?(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o)):"1970"===n&&"01"===i&&"01"===o?(r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))):(r.writeByte(S.TagDate),r.writeAsciiString(n+i+o),r.writeByte(S.TagTime),r.writeAsciiString(a+u+s),"000"!==c&&(r.writeByte(S.TagPoint),r.writeAsciiString(c))),r.writeByte(S.TagSemicolon)}function v(e,t){e._refer.set(t);var r=e.stream,n=("00"+t.getHours()).slice(-2),i=("00"+t.getMinutes()).slice(-2),o=("00"+t.getSeconds()).slice(-2),a=("000"+t.getMilliseconds()).slice(-3);r.writeByte(S.TagTime),r.writeAsciiString(n+i+o),"000"!==a&&(r.writeByte(S.TagPoint),r.writeAsciiString(a)),r.writeByte(S.TagSemicolon)}function g(e,t){e._refer.set(t);var r=e.stream;r.writeByte(S.TagBytes);var n=t.byteLength||t.length;n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.write(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function d(e,t){e._refer.set(t);var r=e.stream,n=t.length;r.writeByte(S.TagString),n>0?(r.writeAsciiString(""+n),r.writeByte(S.TagQuote),r.writeString(t)):r.writeByte(S.TagQuote),r.writeByte(S.TagQuote)}function y(e,t,r){e._refer.set(t);var n=e.stream,i=t.length;if(n.writeByte(S.TagList),i>0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o0){r.writeAsciiString(""+o),r.writeByte(S.TagOpenbrace);for(var a=0;a0?(r.writeAsciiString(""+n),r.writeByte(S.TagOpenbrace),t.forEach(function(t,r){u(e,r),u(e,t)})):r.writeByte(S.TagOpenbrace),r.writeByte(S.TagClosebrace)}function _(e,t){var r,i,o=e.stream,a=n(t);if(a in e._classref)i=e._classref[a],r=e._fieldsref[i];else{r=[];for(var s in t)t.hasOwnProperty(s)&&"function"!=typeof t[s]&&(r[r.length]=s.toString());i=O(e,a,r)}o.writeByte(S.TagObject),o.writeAsciiString(""+i),o.writeByte(S.TagOpenbrace),e._refer.set(t);for(var c=r.length,f=0;f0){n.writeAsciiString(""+i),n.writeByte(S.TagOpenbrace);for(var o=0;o=0;)r[r.length]=n,n=e.indexOf("_",n+1);if(r.length>0){var i=e.split("");if(t=w(i,r,0,"."),null===t&&(t=w(i,r,0,"_")),"function"==typeof t)return re.register(t,e),t}return t=function(){},Object.defineProperty(t.prototype,"getClassName",{value:function(){return e}}),re.register(t,e),t}function b(e,t){var r=e.readUntil(t);return 0===r.length?0:parseInt(r,10)}function T(e){var t=e.stream,r=t.readByte();switch(r){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return r-48;case te.TagInteger:return _(t);case te.TagLong:return j(t);case te.TagDouble:return S(t);case te.TagNull:return null;case te.TagEmpty:return"";case te.TagTrue:return!0;case te.TagFalse:return!1;case te.TagNaN:return NaN;case te.TagInfinity:return B(t);case te.TagDate:return C(e);case te.TagTime:return R(e);case te.TagBytes:return P(e);case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagGuid:return W(e);case te.TagList:return H(e);case te.TagMap:return e.useHarmonyMap?Q(e):q(e);case te.TagClass:return $(e),X(e);case te.TagObject:return J(e);case te.TagRef:return K(e);case te.TagError:throw new Error(F(e));default:n(r)}}function _(e){return b(e,te.TagSemicolon)}function O(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:return _(e);default:n(t)}}function j(e){var t=e.readUntil(te.TagSemicolon),r=parseInt(t,10);return r.toString()===t?r:t}function E(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:return j(e);default:n(t)}}function S(e){return parseFloat(e.readUntil(te.TagSemicolon))}function A(e){var t=e.readByte();switch(t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t-48;case te.TagInteger:case te.TagLong:case te.TagDouble:return S(e);case te.TagNaN:return NaN;case te.TagInfinity:return B(e);default:n(t)}}function B(e){return e.readByte()===te.TagNeg?-(1/0):1/0}function k(e){var t=e.readByte();switch(t){case te.TagTrue:return!0;case te.TagFalse:return!1;default:n(t)}}function C(e){var t,r=e.stream,n=parseInt(r.readAsciiString(4),10),i=parseInt(r.readAsciiString(2),10)-1,o=parseInt(r.readAsciiString(2),10),a=r.readByte();if(a===te.TagTime){var u=parseInt(r.readAsciiString(2),10),s=parseInt(r.readAsciiString(2),10),c=parseInt(r.readAsciiString(2),10),f=0;a=r.readByte(),a===te.TagPoint&&(f=parseInt(r.readAsciiString(3),10),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte(),a>=48&&a<=57&&(r.skip(2),a=r.readByte()))),t=a===te.TagUTC?new Date(Date.UTC(n,i,o,u,s,c,f)):new Date(n,i,o,u,s,c,f)}else t=a===te.TagUTC?new Date(Date.UTC(n,i,o)):new Date(n,i,o);return e.refer.set(t),t}function I(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagDate:return C(e);case te.TagRef:return K(e);default:n(t)}}function R(e){var t,r=e.stream,n=parseInt(r.readAsciiString(2),10),i=parseInt(r.readAsciiString(2),10),o=parseInt(r.readAsciiString(2),10),a=0,u=r.readByte();return u===te.TagPoint&&(a=parseInt(r.readAsciiString(3),10),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte(),u>=48&&u<=57&&(r.skip(2),u=r.readByte()))),t=u===te.TagUTC?new Date(Date.UTC(1970,0,1,n,i,o,a)):new Date(1970,0,1,n,i,o,a),e.refer.set(t),t}function x(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagTime:return R(e);case te.TagRef:return K(e);default:n(t)}}function P(e){var t=e.stream,r=b(t,te.TagQuote),n=t.read(r);return t.skip(1),e.refer.set(n),n}function M(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return new Uint8Array(0);case te.TagBytes:return P(e);case te.TagRef:return K(e);default:n(t)}}function U(e){return e.stream.readString(1)}function L(e){var t=e.stream,r=t.readString(b(t,te.TagQuote));return t.skip(1),r}function N(e){var t=L(e);return e.refer.set(t),t}function F(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagEmpty:return"";case te.TagUTF8Char:return U(e);case te.TagString:return N(e);case te.TagRef:return K(e);default:n(t)}}function W(e){var t=e.stream;t.skip(1);var r=t.readAsciiString(36);return t.skip(1),e.refer.set(r),r}function D(e){var t=e.stream.readByte();switch(t){case te.TagNull:return null;case te.TagGuid:return W(e);case te.TagRef:return K(e);default:n(t)}}function H(e){var t=e.stream,r=[];e.refer.set(r);for(var n=b(t,te.TagOpenbrace),i=0;i=0?t:void n(t,e)}},unserialize:{value:function(){return T(this)}},readInteger:{value:function(){return O(this.stream)}},readLong:{value:function(){return E(this.stream)}},readDouble:{value:function(){return A(this.stream)}},readBoolean:{value:function(){return k(this.stream)}},readDateWithoutTag:{value:function(){return C(this)}},readDate:{value:function(){return I(this)}},readTimeWithoutTag:{value:function(){return R(this)}},readTime:{value:function(){return x(this)}},readBytesWithoutTag:{value:function(){return P(this)}},readBytes:{value:function(){return M(this)}},readStringWithoutTag:{value:function(){return N(this)}},readString:{value:function(){return F(this)}},readGuidWithoutTag:{value:function(){return W(this)}},readGuid:{value:function(){return D(this)}},readListWithoutTag:{value:function(){return H(this)}},readList:{value:function(){return z(this)}},readMapWithoutTag:{value:function(){return this.useHarmonyMap?Q(this):q(this)}},readMap:{value:function(){return this.useHarmonyMap?Y(this):G(this)}},readObjectWithoutTag:{value:function(){return J(this)}},readObject:{value:function(){return X(this)}},reset:{value:function(){this.classref.length=0,this.refer.reset()}}}),e.Reader=V}(hprose,hprose.global),function(e){"use strict";function t(e,t){var r=new n,o=new i(r,t);return o.serialize(e),r}function r(e,t,r){return e instanceof n||(e=new n(e)),new o(e,t,r).unserialize()}var n=e.BytesIO,i=e.Writer,o=e.Reader;e.Formatter={serialize:function(e,r){return t(e,r).bytes},unserialize:r},e.serialize=t,e.unserialize=r}(hprose),function(e){"use strict";e.ResultMode={Normal:0,Serialized:1,Raw:2,RawWithEndTag:3},e.Normal=e.ResultMode.Normal,e.Serialized=e.ResultMode.Serialized,e.Raw=e.ResultMode.Raw,e.RawWithEndTag=e.ResultMode.RawWithEndTag}(hprose),function(e,t,r){"use strict";function n(){}function i(e,t,i){function o(e,t){for(var r=0,n=Ke.length;r=0;r--)e=Ke[r].inputFilter(e,t);return e}function v(e,t){return e=o(e,t),ut(e,t).then(function(e){if(!t.oneway)return a(e,t)})}function _(e,t){return ht.sendAndReceive(e,t).catchError(function(r){var n=E(e,t);if(null!==n)return n;throw r})}function O(e,t,r,n){at(e,t).then(r,n)}function j(){var e=Le.length;if(e>1){var t=Ne+1;t>=e&&(t=0,Ge++),Ne=t,Ue=Le[Ne]}else Ge++;$e(ht)}function E(e,t){if(t.failswitch&&j(),t.idempotent&&t.retried5e3&&(r=5e3),r>0?p.delayed(r,function(){return _(e,t)}):_(e,t)}return null}function S(e){var t={retry:He,retried:0,idempotent:!0,failswitch:!0,timeout:De,client:ht,userdata:{}},r=function(t){var r=null;try{var n=new f(t),i=new h(n,(!0)),o=n.readByte();switch(o){case s.TagError:r=new Error(i.readString());break;case s.TagFunctions:var a=i.readList();i.checkTag(s.TagEnd),k(e,a);break;default:r=new Error("Wrong Response:\r\n"+f.toString(t))}}catch(e){r=e}null!==r?et.reject(r):et.resolve(e)};O(d,t,r,et.reject)}function A(e,t){return function(){return Ve?M(e,t,Array.slice(arguments),!0):p.all(arguments).then(function(r){return M(e,t,r,!1)})}}function B(e,t,n,i,o){if(t[i]===r&&(t[i]={},typeof o!==w&&o.constructor!==Object||(o=[o]),Array.isArray(o)))for(var a=0;a0||r.byref)&&(i.reset(),i.writeList(t),r.byref&&i.writeBoolean(!0)),n}function P(e,t,r,n){return Qe?p.promise(function(i,o){Ye.push({batch:n,name:e,args:t,context:r,resolve:i,reject:o})}):n?W(e,t,r):F(e,t,r)}function M(e,t,r,n){return P(t,r,R(e,t,r,n),n)}function U(e,t,r,n){try{r.onerror?r.onerror(e,t):Xe(e,t),n(t)}catch(e){n(e)}}function L(e,t,r){var n=x(e,t,r);return n.writeByte(s.TagEnd),p.promise(function(e,i){O(n.bytes,r,function(n){if(r.oneway)return void e();var o=null,a=null;try{if(r.mode===c.RawWithEndTag)o=n;else if(r.mode===c.Raw)o=n.subarray(0,n.byteLength-1);else{var u=new f(n),l=new h(u,(!1),r.useHarmonyMap),p=u.readByte();if(p===s.TagResult){if(o=r.mode===c.Serialized?l.readRaw():l.unserialize(),p=u.readByte(),p===s.TagArgument){l.reset();var v=l.readList();C(v,t),p=u.readByte()}}else p===s.TagError&&(a=new Error(l.readString()),p=u.readByte());p!==s.TagEnd&&(a=new Error("Wrong Response:\r\n"+f.toString(n)))}}catch(e){a=e}a?i(a):e(o)},i)})}function N(e){return function(){e&&(Qe=!1,u(function(e){e.forEach(function(e){"settings"in e?q(e.settings).then(e.resolve,e.reject):P(e.name,e.args,e.context,e.batch).then(e.resolve,e.reject)})},Ye),Ye=[])}}function F(e,t,r){r.sync&&(Qe=!0);var n=p.promise(function(n,i){it(e,t,r).then(function(o){try{if(r.onsuccess)try{r.onsuccess(o,t)}catch(t){r.onerror&&r.onerror(e,t),i(t)}n(o)}catch(e){i(e)}},function(t){U(e,t,r,i)})});return n.whenComplete(N(r.sync)),n}function W(e,t,r){return p.promise(function(n,i){Ze.push({args:t,name:e,context:r,resolve:n,reject:i})})}function D(e){var t={timeout:De,retry:He,retried:0,idempotent:ze,failswitch:qe,oneway:!1,sync:!1,client:ht,userdata:{}};for(var r in e)r in t&&(t[r]=e[r]);return t}function H(e,t){var r=e.reduce(function(e,t){return e.write(x(t.name,t.args,t.context)),e},new f);return r.writeByte(s.TagEnd),p.promise(function(n,i){O(r.bytes,t,function(r){if(t.oneway)return void n(e);var o=-1,a=new f(r),u=new h(a,(!1)),l=a.readByte();try{for(;l!==s.TagEnd;){var p=null,v=null,g=e[++o].context.mode;if(g>=c.Raw&&(p=new f),l===s.TagResult){if(g===c.Serialized?p=u.readRaw():g>=c.Raw?(p.writeByte(s.TagResult),p.write(u.readRaw())):(u.useHarmonyMap=e[o].context.useHarmonyMap,u.reset(),p=u.unserialize()),l=a.readByte(),l===s.TagArgument){if(g>=c.Raw)p.writeByte(s.TagArgument),p.write(u.readRaw());else{u.reset();var d=u.readList();C(d,e[o].args)}l=a.readByte()}}else l===s.TagError&&(g>=c.Raw?(p.writeByte(s.TagError),p.write(u.readRaw())):(u.reset(),v=new Error(u.readString())),l=a.readByte());if([s.TagEnd,s.TagResult,s.TagError].indexOf(l)<0)return void i(new Error("Wrong Response:\r\n"+f.toString(r)));g>=c.Raw?(g===c.RawWithEndTag&&p.writeByte(s.TagEnd),e[o].result=p.bytes):e[o].result=p,e[o].error=v}}catch(e){return void i(e)}n(e)},i)})}function z(){Ve=!0}function q(e){if(e=e||{},Ve=!1,Qe)return p.promise(function(t,r){Ye.push({batch:!0,settings:e,resolve:t,reject:r})});var t=Ze.length;if(0===t)return p.value([]);var r=D(e);r.sync&&(Qe=!0);var n=Ze;Ze=[];var i=p.promise(function(e,t){ot(n,r).then(function(t){t.forEach(function(e){if(e.error)U(e.name,e.error,e.context,e.reject);else try{if(e.context.onsuccess)try{e.context.onsuccess(e.result,e.args)}catch(t){e.context.onerror&&e.context.onerror(e.name,t),e.reject(t)}e.resolve(e.result)}catch(t){e.reject(t)}delete e.context,delete e.resolve,delete e.reject}),e(t)},function(e){n.forEach(function(t){"reject"in t&&U(t.name,e,t.context,t.reject)}),t(e)})});return i.whenComplete(N(r.sync)),i}function G(){return Xe}function Q(e){typeof e===b&&(Xe=e)}function Y(){return $e}function J(e){typeof e===b&&($e=e)}function X(){return Ue}function $(){return Le}function K(e){if(typeof e===w)Le=[e];else{if(!Array.isArray(e))return;Le=e.slice(0),Le.sort(function(){return Math.random()-.5})}Ne=0,Ue=Le[Ne]}function V(){return qe}function Z(e){qe=!!e}function ee(){return Ge}function te(){return De}function re(e){De="number"==typeof e?0|e:0}function ne(){return He}function ie(e){He="number"==typeof e?0|e:0}function oe(){return ze}function ae(e){ze=!!e}function ue(e){nt=!!e}function se(){return nt}function ce(){return Fe}function fe(e){Fe=!!e}function le(){return We}function he(e){We=!!e}function pe(){return Je}function ve(e){Je=!!e}function ge(){return 0===Ke.length?null:1===Ke.length?Ke[0]:Ke.slice()}function de(e){Ke.length=0,Array.isArray(e)?e.forEach(function(e){ye(e)}):ye(e)}function ye(e){e&&"function"==typeof e.inputFilter&&"function"==typeof e.outputFilter&&Ke.push(e)}function we(e){var t=Ke.indexOf(e);return t!==-1&&(Ke.splice(t,1),!0)}function me(){return Ke}function be(e,t,n){n===r&&(typeof t===y&&(n=t,t=!1),t||(typeof e===y?(n=e,e=!1):(e&&e.constructor===Object||Array.isArray(e))&&(t=e,e=!1)));var i=ht;return n&&(i={}),e||Ue?(e&&(Ue=e),(typeof t===w||t&&t.constructor===Object)&&(t=[t]),Array.isArray(t)?(k(i,t),et.resolve(i),i):(u(S,i),et)):new Error("You should set server uri first!")}function Te(e,t,r){var i=arguments.length;if(i<1||typeof e!==w)throw new Error("name must be a string");if(1===i&&(t=[]),2===i&&!Array.isArray(t)){var o=[];typeof t!==b&&o.push(n),o.push(t),t=o}if(i>2){typeof r!==b&&t.push(n);for(var a=2;a=0&&(i[o]=i[i.length-1],i.length--),0===i.length&&delete e[t]}}else delete e[t]}function Se(e,t,n){if(typeof e!==w)throw new TypeError("topic name must be a string.");if(t===r||null===t){if(typeof n!==b)return void delete tt[e];t=n}if(typeof t===b&&(n=t,t=null),null===t)if(null===rt){if(tt[e]){var i=tt[e];for(t in i)Ee(i,t,n)}}else rt.then(function(t){Se(e,t,n)});else p.isPromise(t)?t.then(function(t){Se(e,t,n)}):Ee(tt[e],t,n);g(tt[e])&&delete tt[e]}function Ae(e){return!!tt[e]}function Be(){var e=[];for(var t in tt)e.push(t);return e}function ke(){return rt}function Ce(){return null===rt&&(rt=M(ht,"#",[],!1)),rt}function Ie(e){st.push(e),it=st.reduceRight(function(e,t){return function(r,n,i){return p.toPromise(t(r,n,i,e))}},L)}function Re(e){ct.push(e),ot=ct.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},H)}function xe(e){ft.push(e),at=ft.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},v)}function Pe(e){lt.push(e),ut=lt.reduceRight(function(e,t){return function(r,n){return p.toPromise(t(r,n,e))}},_)}function Me(e){return Ie(e),ht}var Ue,Le=[],Ne=-1,Fe=!1,We=!1,De=3e4,He=10,ze=!1,qe=!1,Ge=0,Qe=!1,Ye=[],Je=!1,Xe=n,$e=n,Ke=[],Ve=!1,Ze=[],et=new p,tt=Object.create(null),rt=null,nt=!0,it=L,ot=H,at=v,ut=_,st=[],ct=[],ft=[],lt=[],ht=this;Ce.sync=!0,Ce.idempotent=!0,Ce.failswitch=!0;var pt=Object.create(null,{begin:{value:z},end:{value:q},use:{value:function(e){return Re(e),pt}}}),vt=Object.create(null,{use:{value:function(e){return xe(e),vt}}}),gt=Object.create(null,{use:{value:function(e){return Pe(e),gt}}});Object.defineProperties(this,{"#":{value:Ce},onerror:{get:G,set:Q},onfailswitch:{get:Y,set:J},uri:{get:X},uriList:{get:$,set:K},id:{get:ke},failswitch:{get:V,set:Z},failround:{get:ee},timeout:{get:te,set:re},retry:{get:ne,set:ie},idempotent:{get:oe,set:ae},keepAlive:{get:se,set:ue},byref:{get:ce,set:fe},simple:{get:le,set:he},useHarmonyMap:{get:pe,set:ve},filter:{get:ge,set:de},addFilter:{value:ye},removeFilter:{value:we},filters:{get:me},useService:{value:be},invoke:{value:Te},ready:{value:_e},subscribe:{value:je},unsubscribe:{value:Se},isSubscribed:{value:Ae},subscribedList:{value:Be},use:{value:Me},batch:{value:pt},beforeFilter:{value:vt},afterFilter:{value:gt}}),i&&typeof i===T&&["failswitch","timeout","retry","idempotent","keepAlive","byref","simple","useHarmonyMap","filter"].forEach(function(e){e in i&&(ht[e]=i[e])}),e&&(K(e),be(t))}function o(e){var t=v(e),r=t.protocol;if("http:"!==r&&"https:"!==r&&"tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r&&"ws:"!==r&&"wss:"!==r)throw new Error("The "+r+" client isn't implemented.")}function a(t,r,n){try{return e.HttpClient.create(t,r,n)}catch(e){}try{return e.TcpClient.create(t,r,n)}catch(e){}try{return e.WebSocketClient.create(t,r,n)}catch(e){}if("string"==typeof t)o(t);else if(Array.isArray(t))throw t.forEach(function(e){o(e)}),new Error("Not support multiple protocol.");throw new Error("You should set server uri first!")}var u=t.setImmediate,s=e.Tags,c=e.ResultMode,f=e.BytesIO,l=e.Writer,h=e.Reader,p=e.Future,v=e.parseuri,g=e.isObjectEmpty,d=new Uint8Array(1);d[0]=s.TagEnd;var y="boolean",w="string",m="number",b="function",T="object";Object.defineProperty(i,"create",{value:a}),e.Client=i}(hprose,hprose.global),function(e){"use strict";function t(e,t){function r(e){var t,r,n;for(t=e.replace(/(^\s*)|(\s*$)/g,"").split(";"),r={},e=t[0].replace(/(^\s*)|(\s*$)/g,"").split("=",2),void 0===e[1]&&(e[1]=null),r.name=e[0],r.value=e[1],n=1;n-1){var c=[];for(var f in i[s]){var l=i[s][f];l.EXPIRES&&(new Date).getTime()>l.EXPIRES?c.push(f):0===o.indexOf(l.PATH)&&(a&&l.SECURE||!l.SECURE)&&null!==l.value&&u.push(l.name+"="+l.value)}for(var h in c)delete i[s][c[h]]}return u.length>0?u.join("; "):""}var n=e.parseuri,i={};e.cookieManager={setCookie:t,getCookie:r}}(hprose),function(e,t,r){"use strict";function n(){}function i(e){var t=Object.create(null);if(e){e=e.split("\r\n");for(var r=0,n=e.length;r0&&(o=o.timeout(t.timeout).catchError(function(e){throw a.onload=n,a.onerror=n,a.abort(),e},function(e){return e instanceof l})),e.constructor===String||ArrayBuffer.isView)a.send(e);else if(e.buffer.slice)a.send(e.buffer.slice(0,e.length));else{var f=new Uint8Array(e.length);f.set(e),a.send(f.buffer)}return o}function d(e,r){var n=new c,i=h(r.httpHeader),o=y.getCookie(A.uri());return""!==o&&(i.Cookie=o),t.api.ajax({url:A.uri,method:"post",data:{body:f.toString(e)},timeout:r.timeout,dataType:"text",headers:i,returnAll:!0,certificate:A.certificate},function(e,t){e?(r.httpHeader=e.headers,200===e.statusCode?(y.setCookie(e.headers,A.uri),n.resolve(new f(e.body).takeBytes())):n.reject(new Error(e.statusCode+":"+e.body))):n.reject(new Error(t.msg))}),n}function w(e,r){var n="undefined"!=typeof t.api&&"undefined"!=typeof t.api.ajax,i=n?d(e,r):v(e,r);return r.oneway&&i.resolve(),i}function m(e){"function"==typeof e&&(E=e)}function b(){return E}function T(e){"function"==typeof e&&(S=e)}function _(){return S}function O(e,t){"content-type"!==e.toLowerCase()&&"content-length"!==e.toLowerCase()&&(t?j[e]=t:delete j[e])}if(this.constructor!==o)return new o(e,a,u);s.call(this,e,a,u);var j=Object.create(null),E=n,S=n,A=this;Object.defineProperties(this,{onprogress:{get:b,set:m},onRequestProgress:{get:b,set:m},onResponseProgress:{get:_,set:T},setHeader:{value:O},sendAndReceive:{value:w}})}function a(e){var t=d(e);if("http:"!==t.protocol&&"https:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function u(e,t,r){if("string"==typeof e)a(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){a(e)})}return new o(e,t,r)}var s=e.Client,c=e.Future,f=e.BytesIO,l=t.TimeoutError,h=t.location!==r&&"file:"===t.location.protocol,p=t.XMLHttpRequest,v="undefined"!=typeof p,g=!h&&v&&"withCredentials"in new p,d=e.parseuri,y=e.cookieManager;Object.defineProperty(o,"create",{value:u}),e.HttpClient=o}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t,o){function a(){return m<2147483647?++m:m=0}function l(e,t){var r=new u;r.writeInt32BE(e),t.constructor===String?r.writeString(t):r.write(t);var n=r.bytes;ArrayBuffer.isView?j.send(n):n.buffer.slice?j.send(n.buffer.slice(0,n.length)):j.send(n.buffer)}function p(e){O.resolve(e)}function v(e){var t=new u(e.data),n=t.readInt32BE(),i=T[n];if(delete T[n],i!==r&&(--b,i.resolve(t.read(t.length-4))),b<100&&_.length>0){++b;var o=_.pop();O.then(function(){l(o[0],o[1])})}0!==b||E.keepAlive||w()}function g(e){T.forEach(function(t,r){t.reject(new Error(e.code+":"+e.reason)),delete T[r]}),b=0,j=null}function d(){O=new c,j=new h(E.uri),j.binaryType="arraybuffer",j.onopen=p,j.onmessage=v,j.onerror=n,j.onclose=g}function y(e,t){var r=a(),n=new c;return T[r]=n,t.timeout>0&&(n=n.timeout(t.timeout).catchError(function(e){throw delete T[r],--b,w(),e},function(e){return e instanceof f})),null!==j&&j.readyState!==h.CLOSING&&j.readyState!==h.CLOSED||d(),b<100?(++b,O.then(function(){l(r,e)})):_.push([r,e]),t.oneway&&n.resolve(),n}function w(){null!==j&&(j.onopen=n,j.onmessage=n,j.onclose=n,j.close())}if("undefined"==typeof h)throw new Error("WebSocket is not supported by this browser.");if(this.constructor!==i)return new i(e,t,o);s.call(this,e,t,o);var m=0,b=0,T=[],_=[],O=null,j=null,E=this;Object.defineProperties(this,{sendAndReceive:{value:y},close:{value:w}})}function o(e){var t=l(e);if("ws:"!==t.protocol&&"wss:"!==t.protocol)throw new Error("This client desn't support "+t.protocol+" scheme.")}function a(e,t,r){if("string"==typeof e)o(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){o(e)})}return new i(e,t,r)}var u=e.BytesIO,s=e.Client,c=e.Future,f=t.TimeoutError,l=e.parseuri,h=t.WebSocket||t.MozWebSocket;Object.defineProperty(i,"create",{value:a}),e.WebSocketClient=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e){var t=s[e.socketId];t.onreceive(e.data)}function o(e){var t=s[e.socketId];t.onerror(e.resultCode),t.destroy()}function a(){null===c&&(c=t.chrome.sockets.tcp,c.onReceive.addListener(i),c.onReceiveError.addListener(o)),this.socketId=new u,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var u=e.Future,s={},c=null;Object.defineProperties(a.prototype,{connect:{value:function(e,t,r){var n=this;c.create({persistent:r&&r.persistent},function(i){r&&("noDelay"in r&&c.setNoDelay(i.socketId,r.noDelay,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())}),"keepAlive"in r&&c.setKeepAlive(i.socketId,r.keepAlive,function(e){e<0&&(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose())})),r&&r.tls?c.setPaused(i.socketId,!0,function(){c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.secure(i.socketId,function(t){0!==t?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):c.setPaused(i.socketId,!1,function(){n.socketId.resolve(i.socketId)})})})}):c.connect(i.socketId,e,t,function(e){e<0?(n.socketId.reject(e),c.disconnect(i.socketId),c.close(i.socketId),n.onclose()):n.socketId.resolve(i.socketId)})}),this.socketId.then(function(e){s[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new u;return this.socketId.then(function(n){c.send(n,e,function(e){e.resultCode<0?(t.onerror(e.resultCode),r.reject(e.resultCode),t.destroy()):r.resolve(e.bytesSent)})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){c.disconnect(t),c.close(t),delete s[t],e.onclose()})}},ref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!1)})}},unref:{value:function(){this.socketId.then(function(e){c.setPaused(e,!0)})}},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.ChromeTcpSocket=a}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(){null===l&&(l=t.api.require("socketManager")),this.socketId=new o,this.connected=!1,this.timeid=r,this.onclose=n,this.onconnect=n,this.onreceive=n,this.onerror=n}var o=e.Future,a=t.atob,u=t.btoa,s=e.toUint8Array,c=e.toBinaryString,f={},l=null;Object.defineProperties(i.prototype,{connect:{value:function(e,t,r){var n=this;l.createSocket({type:"tcp",host:e,port:t,timeout:r.timeout,returnBase64:!0},function(e){if(e)switch(e.state){case 101:break;case 102:n.socketId.resolve(e.sid);break;case 103:n.onreceive(s(a(e.data.replace(/\s+/g,""))));break;case 201:n.socketId.reject(new Error("Create TCP socket failed"));break;case 202:n.socketId.reject(new Error("TCP connection failed"));break;case 203:n.onclose(),n.onerror(new Error("Abnormal disconnect connection"));break;case 204:n.onclose();break;case 205:n.onclose(),n.onerror(new Error("Unknown error"))}}),this.socketId.then(function(e){f[e]=n,n.connected=!0,n.onconnect(e)},function(e){n.onerror(e)})}},send:{value:function(e){var t=this,r=new o;return this.socketId.then(function(n){l.write({sid:n,data:u(c(e)),base64:!0},function(e,n){e.status?r.resolve():(t.onerror(new Error(n.msg)),r.reject(n.msg),t.destroy())})}),r}},destroy:{value:function(){var e=this;this.connected=!1,this.socketId.then(function(t){l.closeSocket({sid:t},function(t,r){t.status||e.onerror(new Error(r.msg))}),delete f[t]})}},ref:{value:n},unref:{value:n},clearTimeout:{value:function(){this.timeid!==r&&t.clearTimeout(this.timeid)}},setTimeout:{value:function(e,r){this.clearTimeout(),this.timeid=t.setTimeout(r,e)}}}),e.APICloudTcpSocket=i}(hprose,hprose.global),function(e,t,r){"use strict";function n(){}function i(e,t){e.onreceive=function(r){"receiveEntry"in e||(e.receiveEntry={stream:new v,headerLength:4,dataLength:-1,id:null});var n=e.receiveEntry,i=n.stream,o=n.headerLength,a=n.dataLength,u=n.id;for(i.write(r);;){if(a<0&&i.length>=o&&(a=i.readInt32BE(),0!==(2147483648&a)&&(a&=2147483647,o=8)),8===o&&null===u&&i.length>=o&&(u=i.readInt32BE()),!(a>=0&&i.length-o>=a))break;t(i.read(a),u),o=4,u=null,i.trunc(),a=-1}n.stream=i,n.headerLength=o,n.dataLength=a,n.id=u}}function o(e){e&&(this.client=e,this.uri=this.client.uri,this.size=0,this.pool=[],this.requests=[])}function a(e){o.call(this,e)}function u(e){o.call(this,e)}function s(e,t,r){function n(){return w}function i(e){w=!!e}function o(){return m}function c(e){m=!!e}function f(){return b}function l(e){"number"==typeof e?(b=0|e,b<1&&(b=10)):b=10}function h(){return T}function v(e){T="number"==typeof e?0|e:0}function d(e,t){var r=new g;return m?(null!==_&&_.uri===y.uri||(_=new a(y)),_.sendAndReceive(e,r,t)):(null!==O&&O.uri===y.uri||(O=new u(y)),O.sendAndReceive(e,r,t)),t.oneway&&r.resolve(),r}if(this.constructor!==s)return new s(e,t,r);p.call(this,e,t,r);var y=this,w=!0,m=!1,b=10,T=3e4,_=null,O=null;Object.defineProperties(this,{noDelay:{get:n,set:i},fullDuplex:{get:o,set:c},maxPoolSize:{get:f,set:l},poolTimeout:{get:h,set:v},sendAndReceive:{value:d}})}function c(e){var t=y(e),r=t.protocol;if("tcp:"!==r&&"tcp4:"!==r&&"tcp6:"!==r&&"tcps:"!==r&&"tcp4s:"!==r&&"tcp6s:"!==r&&"tls:"!==r)throw new Error("This client desn't support "+r+" scheme.")}function f(e,t,r){if("string"==typeof e)c(e);else{if(!Array.isArray(e))throw new Error("You should set server uri first!");e.forEach(function(e){c(e)})}return new s(e,t,r)}var l=e.ChromeTcpSocket,h=e.APICloudTcpSocket,p=e.Client,v=e.BytesIO,g=e.Future,d=t.TimeoutError,y=e.parseuri;Object.defineProperties(o.prototype,{create:{value:function(){var e,r=y(this.uri),n=r.protocol,i=r.hostname,o=parseInt(r.port,10);if("tcp:"===n||"tcp4:"===n||"tcp6:"===n)e=!1;else{if("tcps:"!==n&&"tcp4s:"!==n&&"tcp6s:"!==n&&"tls:"!==n)throw new Error("Unsupported "+n+" protocol!");e=!0}var a;if(t.chrome&&t.chrome.sockets&&t.chrome.sockets.tcp)a=new l;else{if(!t.api||!t.api.require)throw new Error("TCP Socket is not supported by this browser or platform.");a=new h}var u=this;return a.connect(i,o,{persistent:!0,tls:e,timeout:this.client.timeout,noDelay:this.client.noDelay,keepAlive:this.client.keepAlive}),a.onclose=function(){--u.size},++this.size,a}}}),a.prototype=Object.create(o.prototype,{fetch:{value:function(){for(var e=this.pool;e.length>0;){var t=e.pop();if(t.connected)return 0===t.count&&(t.clearTimeout(),t.ref()),t}return null}},init:{value:function(e){var t=this;e.count=0,e.futures={},e.timeoutIds={},i(e,function(r,n){var i=e.futures[n];i&&(t.clean(e,n),0===e.count&&t.recycle(e),i.resolve(r))}),e.onerror=function(r){var n=e.futures;for(var i in n){var o=n[i];t.clean(e,i),o.reject(r)}}}},recycle:{value:function(e){e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()})}},clean:{value:function(e,n){e.timeoutIds[n]!==r&&(t.clearTimeout(e.timeoutIds[n]),delete e.timeoutIds[n]),delete e.futures[n],--e.count,this.sendNext(e)}},sendNext:{value:function(e){if(e.count<10)if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.pool.lastIndexOf(e)<0&&this.pool.push(e)}},send:{value:function(e,r,n,i,o){var a=this,u=i.timeout;u>0&&(o.timeoutIds[n]=t.setTimeout(function(){a.clean(o,n),0===o.count&&a.recycle(o),r.reject(new d("timeout"))},u)),o.count++,o.futures[n]=r;var s=e.length,c=new v(8+s);c.writeInt32BE(2147483648|s),c.writeInt32BE(n),c.write(e),o.send(c.buffer).then(function(){a.sendNext(o)})}},getNextId:{value:function(){return this.nextid<2147483647?++this.nextid:this.nextid=0}},sendAndReceive:{value:function(e,t,r){var n=this.fetch(),i=this.getNextId();if(n)this.send(e,t,i,r,n);else if(this.size0;){var t=e.pop();if(t.connected)return t.clearTimeout(),t.ref(),t}return null}},recycle:{value:function(e){this.pool.lastIndexOf(e)<0&&(e.unref(),e.setTimeout(this.client.poolTimeout,function(){e.destroy()}),this.pool.push(e))}},clean:{value:function(e){e.onreceive=n,e.onerror=n,e.timeoutId!==r&&(t.clearTimeout(e.timeoutId),delete e.timeoutId)}},sendNext:{value:function(e){if(this.requests.length>0){var t=this.requests.pop();t.push(e),this.send.apply(this,t)}else this.recycle(e)}},send:{value:function(e,r,n,o){var a=this,u=n.timeout;u>0&&(o.timeoutId=t.setTimeout(function(){a.clean(o),o.destroy(),r.reject(new d("timeout"))},u)),i(o,function(e){a.clean(o),a.sendNext(o),r.resolve(e)}),o.onerror=function(e){a.clean(o),r.reject(e)};var s=e.length,c=new v(4+s);c.writeInt32BE(s),c.write(e),o.send(c.buffer)}},sendAndReceive:{value:function(e,t,r){var n=this.fetch();if(n)this.send(e,t,r,n);else if(this.size1?JSON.stringify(t):JSON.stringify(t[0])},e.JSONRPCClientFilter=t}(hprose),function(e){"use strict";e.common={Completer:e.Completer,Future:e.Future,ResultMode:e.ResultMode},e.io={BytesIO:e.BytesIO,ClassManager:e.ClassManager,Tags:e.Tags,RawReader:e.RawReader,Reader:e.Reader,Writer:e.Writer,Formatter:e.Formatter},e.client={Client:e.Client,HttpClient:e.HttpClient,TcpClient:e.TcpClient,WebSocketClient:e.WebSocketClient},e.filter={JSONRPCClientFilter:e.JSONRPCClientFilter},"function"==typeof define&&(define.cmd?define("hprose",[],e):define.amd&&define("hprose",[],function(){return e})),"object"==typeof module&&(module.exports=e)}(hprose),!function(e){"use strict";function t(e,t,r,i){var o=t&&t.prototype instanceof n?t:n,a=Object.create(o.prototype),u=new h(i||[]);return a._invoke=c(e,r,u),a}function r(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function n(){}function i(){}function o(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){this.arg=e}function s(e){function t(n,i,o,a){var s=r(e[n],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f instanceof u?Promise.resolve(f.arg).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(f).then(function(e){c.value=e,o(c)},a)}a(s.arg)}function n(e,r){function n(){return new Promise(function(n,i){t(e,r,n,i)})}return i=i?i.then(n,n):n()}"object"==typeof process&&process.domain&&(t=process.domain.bind(t));var i;this._invoke=n}function c(e,t,n){var i=_;return function(o,a){if(i===j)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return v()}for(;;){var u=n.delegate;if(u){if("return"===o||"throw"===o&&u.iterator[o]===g){n.delegate=null;var s=u.iterator.return;if(s){var c=r(s,u.iterator,a);if("throw"===c.type){o="throw",a=c.arg;continue}}if("return"===o)continue}var c=r(u.iterator[o],u.iterator,a);if("throw"===c.type){n.delegate=null,o="throw",a=c.arg;continue}o="next",a=g;var f=c.arg;if(!f.done)return i=O,f;n[u.resultName]=f.value,n.next=u.nextLoc,n.delegate=null}if("next"===o)n.sent=n._sent=a;else if("throw"===o){if(i===_)throw i=E,a;n.dispatchException(a)&&(o="next",a=g)}else"return"===o&&n.abrupt("return",a);i=j;var c=r(e,t,n);if("normal"===c.type){i=n.done?E:O;var f={value:c.arg,done:n.done};if(c.arg!==S)return f;n.delegate&&"next"===o&&(a=g)}else"throw"===c.type&&(i=E,o="throw",a=c.arg)}}}function f(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function l(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(f,this),this.reset(!0)}function p(e){if(e){var t=e[w];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var a=d.call(i,"catchLoc"),u=d.call(i,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),l(r),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:p(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this); \ No newline at end of file +var hprose=Object.create(null);hprose.global="object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this,function(e,t){"use strict";function r(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return function(t){return e.apply(t,Array.prototype.slice.call(arguments,1))}}function n(e){for(var t=e.length,r=new Array(t),n=0;n>15,i=new Array(r?n+1:n),o=0;o=0?n=i:(n=r+i)<0&&(n=0);for(var o;n>>0,i=arguments[1],o=0;o>>0,i=arguments[1],o=0;o>>0,n=arguments[1],i=n>>0,o=i<0?Math.max(r+i,0):Math.min(i,r),a=arguments[2],u=void 0===a?r:a>>0,s=u<0?Math.max(r+u,0):Math.min(u,r);o>>0,i=e>>0,o=i<0?Math.max(n+i,0):Math.min(i,n),a=t>>0,u=a<0?Math.max(n+a,0):Math.min(a,n),s=arguments[2],c=void 0===s?n:s>>0,f=c<0?Math.max(n+c,0):Math.min(c,n),l=Math.min(f-u,n-o),h=1;for(u0;)u in r?r[o]=r[u]:delete r[o],u+=h,o+=h,l--;return r}}),Array.from||Object.defineProperty(Array,"from",{value:function(){var e=Object.prototype.toString,t=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},r=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},n=Math.pow(2,53)-1,i=function(e){var t=r(e);return Math.min(Math.max(t,0),n)};return function(e){var r=this,n=Object(e);if(null===e||void 0===e)throw new TypeError("Array.from requires an array-like object - not null or undefined");var o,a=arguments.length>1?arguments[1]:void 0;if(void 0!==a){if(!t(a))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(o=arguments[2])}for(var u,s=i(n.length),c=t(r)?Object(new r(s)):new Array(s),f=0;fr.length)&&(t=r.length),t-=e.length;var n=r.indexOf(e,t);return-1!==n&&n===t}}),String.prototype.includes||Object.defineProperty(String.prototype,"includes",{value:function(){return"number"==typeof arguments[1]?!(this.length=1<<28)throw new RangeError("repeat count must not overflow maximum string size");for(var r="";1==(1&e)&&(r+=t),0!==(e>>>=1);)t+=t;return r}}),String.prototype.trim||Object.defineProperty(String.prototype,"trim",{value:function(){return this.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{value:function(){return this.toString().replace(/^[\s\xa0]+/,"")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{value:function(){return this.toString().replace(/[\s\xa0]+$/,"")}}),Object.keys||Object.defineProperty(Object,"keys",{value:function(){var e=Object.prototype.hasOwnProperty,t=!{toString:null}.propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var o=[];for(var a in i)e.call(i,a)&&o.push(a);if(t)for(var u=0;u0&&Array.isArray(arguments[0]))for(var s=arguments[0],c=0,f=s.length;c0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,f=o.length;a0&&Array.isArray(arguments[0]))for(var o=arguments[0],a=0,u=o.length;a0;)i(e.shift())}).observe(t,{characterData:!0}),function(){var r=o(arguments);return e.push(r),t.data=1&r,r}},s.messageChannel=function(){var t=new e.MessageChannel;return t.port1.onmessage=function(e){i(Number(e.data))},function(){var e=o(arguments);return t.port2.postMessage(e),e}},s.nextTick=function(){return function(){var t=o(arguments);return e.process.nextTick(r(i,t)),t}},s.postMessage=function(){var e=a.createElement("iframe");e.style.display="none",a.documentElement.appendChild(e);var t=e.contentWindow;t.document.write('