Starting work on v1.34.0
This commit is contained in:
parent
473495a1cf
commit
65bd1348dc
465 changed files with 265 additions and 68978 deletions
|
|
@ -649,23 +649,23 @@ var pt="Hard Drive",st=["XTC","ATC","COMPAQ"],qt=[{0:[306,2],1:[375,8],2:[306,6]
|
|||
112,Tt=144,$t=145,Ut=240,au=2,Ot=4,gu=0,hu=2,ku=0,lu=1,cu=3,mu=5,nu=8,pu=10,At=12,ru=15,iu=224,ju=228,ot=0,eu=4,tu=20,nt=0,Bt=1,ut=2,yt=4,zt=8,tt=32,ft={800:Z.prototype.El,801:Z.prototype.Fl,802:Z.prototype.Dl},et={496:Z.prototype.dk,497:Z.prototype.Lk,498:Z.prototype.Nk,499:Z.prototype.Ok,500:Z.prototype.Jk,501:Z.prototype.Ik,502:Z.prototype.Kk,503:Z.prototype.Pk},ht={800:Z.prototype.Rm,801:Z.prototype.Um,802:Z.prototype.Tm,803:Z.prototype.Sm,807:Z.prototype.lh,811:Z.prototype.lh,815:Z.prototype.lh},
|
||||
gt={496:Z.prototype.bm,497:Z.prototype.gm,498:Z.prototype.em,499:Z.prototype.fm,500:Z.prototype.am,501:Z.prototype.$l,502:Z.prototype.cm,503:Z.prototype.Zl,1014:Z.prototype.dm};Ea(function(){for(var a=Wa(document,"pcx86","hdc"),b=0;b<a.length;b++){var c=a[b],d=Ta(c),d=new Z(d);Va(d,c)}});
|
||||
function vu(a,b,c){t.call(this,"Computer",a);this.ca.Pb=!1;wu(this,b);this.M=zc(this,"autoPower",a);this.C=0;this.Z=a.busWidth||a.buswidth;this.A=xu;this.K=null;this.H=this.X=!1;this.ba=zc(this,"url")||"";this.ga=(Math.random()+.1).toString(36).substr(2,12);this.B=yu(this);if(this.U=Sa("CPU",this.id)){this.Ea=Sa("Debugger",this.id);this.G=[];for(b=null;b=ib(this,"Video",b);)this.G.push(b);this.ma=new zb({id:this.Vd+".bus",busWidth:this.Z},this.U,this.Ea);var d,e=Qa(this.id);if((this.D=Sa("Panel",
|
||||
this.id))&&this.D.Cf)for(b=0;b<e.length;b++)d=e[b],d.Aa=this.D.Aa,d.lc=this.D.lc,d.Cf=this.D.Cf;this.lc("PCx86 v1.33.1\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.hc&&d.hc(this,this.ma,this.U,this.Ea);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.A=parseInt(d,10));var f;if(a=zc(this,"state")||(f=!0,a.state))b=this.V=a,f||(this.H=!0,this.A=xu),this.A&&(this.L=new De(this,"1.33.1"),
|
||||
this.id))&&this.D.Cf)for(b=0;b<e.length;b++)d=e[b],d.Aa=this.D.Aa,d.lc=this.D.lc,d.Cf=this.D.Cf;this.lc("PCx86 v1.34.0\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.hc&&d.hc(this,this.ma,this.U,this.Ea);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.A=parseInt(d,10));var f;if(a=zc(this,"state")||(f=!0,a.state))b=this.V=a,f||(this.H=!0,this.A=xu),this.A&&(this.L=new De(this,"1.34.0"),
|
||||
this.L.load()?b=null:delete this.L);!b&&this.A&&(b=zu(this))&&(this.H=!0);if(b){var g=this;ta(b,null,!0,function(a,b,c){c?(g.J=null,g.H=!1,g.Aa("Unable to load machine state from server (error "+c+(b?": "+ma(b):"")+")")):(g.K=b,g.X=!0);Za(g)})}else Za(this);this.ia.power||(this.M=!0);!c&&this.M&&Au(this,this.$e)}else r("Unable to find CPU component")}ba(vu,t);
|
||||
function wu(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.I=b}function zc(a,b,c){var d=b.toLowerCase(),d=Aa(b)||Aa(d);void 0===d&&a.I&&(d=a.I[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Au(a,b,c){for(var d=Qa(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ya(f)){Ya(f,function(){Au(a,b,c)});return}}b.call(a,c)}
|
||||
function Bu(a,b){var c=new De(a,"1.33.1",Cu);if(c.load()&&Du(c)){var d=c.get(Eu),e=b?b.get(Eu):"unknown";d!=e&&(a.Aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=vu.prototype;
|
||||
k.$e=function(a){void 0===a&&(a=this.A||(this.K?Fu:xu));if(!this.C){this.C++;var b=!1,c=!1;this.W=!1;var d=this.L||new De(this,"1.33.1");if(a==Gu)b=!0;else if(a>xu){if(d.load(this.K)){this.F=new De(this,"1.33.1",Hu);this.F.load()&&(Iu(this,d),a=Ju,Ku(this.F));this.F.set(Eu,oa());Lu(this.F);var e=this.A&&!this.H;if(a==Fu||Pa("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Du(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=
|
||||
function Bu(a,b){var c=new De(a,"1.34.0",Cu);if(c.load()&&Du(c)){var d=c.get(Eu),e=b?b.get(Eu):"unknown";d!=e&&(a.Aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=vu.prototype;
|
||||
k.$e=function(a){void 0===a&&(a=this.A||(this.K?Fu:xu));if(!this.C){this.C++;var b=!1,c=!1;this.W=!1;var d=this.L||new De(this,"1.34.0");if(a==Gu)b=!0;else if(a>xu){if(d.load(this.K)){this.F=new De(this,"1.34.0",Hu);this.F.load()&&(Iu(this,d),a=Ju,Ku(this.F));this.F.set(Eu,oa());Lu(this.F);var e=this.A&&!this.H;if(a==Fu||Pa("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Du(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=
|
||||
g?(this.Aa("Error: "+g),"unable to verify user"==g&&(ya(Mu,""),this.B=null)):this.lc(f+": "+g),Ku(d),d.load()?(c=Du(d),e=!0):c=!1))}e&&Bu(this,c?d:null)}else a==Ju&&d.clear()}else Bu(this);delete this.K;delete this.L}e=Qa(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.U&&(c=Nu(this,g,d,b,c));b=[d,a,c];a!=Gu?Au(this,this.ki,b):this.ki(b)}};
|
||||
function Nu(a,b,c,d,e){if(!b.ca.Pb){b.ca.Pb=!0;if(b.Ob){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ob(f,d)&&f&&(r("Unable to restore state for "+b.type),a.V&&!a.X?(c.clear(),a.A=xu,window&&window.location.reload()):a.W=!0,b.Ob(null),e=!1)}if(!d&&b.ti)for(a=b.ti.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
k.ki=function(a){var b=a[0],c=0>a[1];a=a[2];this.ea=!0;this.ca.Pb=!0;var d=this.ia.power;d&&(d.textContent="Shutdown");this.U&&(Nu(this,this.U,b,c,a),this.U.Ee());this.W&&(Iu(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.C=0};
|
||||
function Iu(a,b){if(Pa("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.33.1"};d.url=a.ba;d.user=c;d.type="bug";d.data=b;ta("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function Ou(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new De(a,"1.33.1"),g=new De(a,"1.33.1",Cu),h=oa();g.set(Eu,h);f.set(Eu,h);f.set(Pu,"1.33.1");f.set(Qu,window?window.location.href:null);f.set(Ru,window?window.navigator.userAgent:"");a.U&&a.U.Nb&&(c&&Dc(a.U),d=a.U.Nb(b,c),"object"===typeof d&&f.set(a.U.id,d),c&&(a.U.ca.Pb=!1,!1===d&&(e=null)));for(var h=Qa(a.id),l=0;l<h.length;l++){var m=h[l];m.ca.Pb&&(m.Nb&&(d=m.Nb(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.ca.Pb=!1,!1===d&&(e=
|
||||
function Iu(a,b){if(Pa("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.34.0"};d.url=a.ba;d.user=c;d.type="bug";d.data=b;ta("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function Ou(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new De(a,"1.34.0"),g=new De(a,"1.34.0",Cu),h=oa();g.set(Eu,h);f.set(Eu,h);f.set(Pu,"1.34.0");f.set(Qu,window?window.location.href:null);f.set(Ru,window?window.navigator.userAgent:"");a.U&&a.U.Nb&&(c&&Dc(a.U),d=a.U.Nb(b,c),"object"===typeof d&&f.set(a.U.id,d),c&&(a.U.ca.Pb=!1,!1===d&&(e=null)));for(var h=Qa(a.id),l=0;l<h.length;l++){var m=h[l];m.ca.Pb&&(m.Nb&&(d=m.Nb(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.ca.Pb=!1,!1===d&&(e=
|
||||
null)))}e&&(c?(h=d=!1,b?(a.B&&Su(a,a.B,f.toString()),Lu(g)&&Lu(f)||(e=null,d=h=!0)):a.A&&(d=!0,h=a.A==Tu),d&&f.clear(h)):e=f.toString());c&&(a.ca.Pb=!1,b=a.ia.power)&&(b.textContent="Power");a.C=0;return e}k.reset=function(){this.ma&&this.ma.reset&&this.ma.reset();for(var a=Qa(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ma&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=Qa(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
|
||||
k.stop=function(a,b){for(var c=Qa(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
k.wb=function(a,b,c){var d=this;switch(b){case "power":return this.ia[b]=c,c.onclick=function(){d.C||(d.ca.Pb?Ou(d,!1,!0):Au(d,d.$e))},!0;case "reset":return this.ia[b]=c,c.onclick=function(){if(d.ca.Pb&&!d.C)if(d.A&&!d.J){var a=Pa("Click OK to save changes to this PCx86 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Ou(d,a,!0);!a&&d.V?window&&window.location.reload():(a||(d.N=!0),d.$e(xu),d.N=!1)}else d.reset(),d.U&&d.U.Ee()},!0;case "save":if(ja(ua(),"pcjs.org"))c.parentNode.removeChild(c);
|
||||
else return this.ia[b]=c,c.onclick=function(){var a=yu(d,!0);if(a){var b=!!(d.A&&!d.J||d.V),c=Ou(d,b);b?Su(d,a,c):d.Aa("Resume disabled, machine state not saved")}},!0}return!1};
|
||||
function yu(a,b){var c=a.B;c||((c=xa(Mu),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Uu(a,c))||a.Aa("The user ID is invalid.")):b&&a.Aa("Browser local storage is not available"));return c}
|
||||
function Uu(a,b){a.B=null;b=ta(ua()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya(Mu,b.data),a.B=b.data)}catch(d){r(d.message+" ("+c+")")}return a.B}function zu(a){var b=null;a.B&&(b=ua()+"/api/v1/user?req=load&user="+a.B+"&state="+Vu(a,"1.33.1"));return b}
|
||||
function Su(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Vu(a,"1.33.1");d.data=c;b=ta(ua()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Aa("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Aa(c),ya(Mu,""),a.B=null)}}
|
||||
function Uu(a,b){a.B=null;b=ta(ua()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya(Mu,b.data),a.B=b.data)}catch(d){r(d.message+" ("+c+")")}return a.B}function zu(a){var b=null;a.B&&(b=ua()+"/api/v1/user?req=load&user="+a.B+"&state="+Vu(a,"1.34.0"));return b}
|
||||
function Su(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Vu(a,"1.34.0");d.data=c;b=ta(ua()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Aa("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Aa(c),ya(Mu,""),a.B=null)}}
|
||||
function ib(a,b,c){a=Qa(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Mc(a,b){if(a.G.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.G[0];a.D&&a.D.focus();!b&&window&&window.scrollTo(c,d)}}
|
||||
function Nc(a,b){a.U&&(a=a.U,a.pi&&(b||!a.ca.Ib||a.ca.ii)&&(jf(a,"EAX",a.F),jf(a,"EBX",a.G),jf(a,"ECX",a.H),jf(a,"EDX",a.K),jf(a,"ESP",C(a)),jf(a,"EBP",a.L),jf(a,"ESI",a.J),jf(a,"EDI",a.I),jf(a,"CS",a.ga.ha),jf(a,"DS",a.Ca.ha),jf(a,"SS",a.W.ha),jf(a,"ES",a.ua.ha),jf(a,"EIP",E(a)),b=md(a),jf(a,"PS",b),jf(a,"V",b&2048),jf(a,"D",b&1024),jf(a,"I",b&512),jf(a,"T",b&256),jf(a,"S",b&128),jf(a,"Z",b&64),jf(a,"A",b&16),jf(a,"P",b&4),jf(a,"C",b&1),80386==a.aa&&(jf(a,"FS",a.qb.ha),jf(a,"GS",a.rb.ha),jf(a,"CR0",
|
||||
a.pa),jf(a,"CR2",a.Wd),jf(a,"CR3",a.md))),b=a.ia.speed)&&(b.textContent=a.ca.Ib&&a.R.vd?a.R.vd.toFixed(2)+"Mhz":"Stopped")}
|
||||
|
|
@ -682,9 +682,9 @@ a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pcx86$2")
|
|||
function Zu(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ta(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Zu(a,b,c)}})}else c(a,null)}
|
||||
function $u(a,b,c,d){function e(a){if(void 0===h){var b=g&&Wa(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ka(a))}function f(a){e("Error: "+a);l&&(--Wu||Ia(!0));l=!1}var g,h,l=!0;Wu++;Oa[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=m:y.appendChild(document.createTextNode(m));q.appendChild(y)}c||
|
||||
(c="/versions/pcx86/1.33.1/components.xsl");m=function(d,h){h?Xu(c,null,null,!1,e,function(d,l){l?(Na(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Wu||Ia(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--Wu||Ia(!0)):f("invalid machine element: "+
|
||||
(c="/versions/pcx86/1.34.0/components.xsl");m=function(d,h){h?Xu(c,null,null,!1,e,function(d,l){l?(Na(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Wu||Ia(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--Wu||Ia(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Xu(b,a,d,!0,e,m):Yu(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(w){f(w.message)}return l}function av(a,b,c,d){Ia(!1);return $u(a,b,c,d)}window.embedPC=av;window.embedPCx86=av;window.findMachineComponent=function(a,b){return Sa(b,a+".machine")};window.enableEvents=Ia;window.sendEvent=Ka;
|
||||
function bv(a,b,c,d){if(!c&&b){d.push(b);a=Oa[d[0]];b=null;for(var e in a)if(ja(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?ta(b,null,!0,function(a,b){cv(b,d)}):cv(null,d)}else r("Error ("+c+") requesting "+a)}
|
||||
function cv(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=Oa[f],l={},m;for(m in h){var q=h[m],y=ia(m);if("xml"==y){for(y=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=y.exec(h[m]);){var w=d[2];w&&(h[w]||(q=q.replace(d[0],"")))}d=m=ha(m)}else"xsl"==y&&(e=m=ha(m));l[m]=q}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&e?(a=JSON.stringify(l),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
"©"),a=Ca(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n')+"...\n",a=a+('<script type="text/javascript" src="'+g+'">\x3c/script>\n')+('<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n')+"The machine should appear where the <div> is located.",r(a)):r("Missing XML/XSL resources")}
|
||||
window.savePC=function(a,b,c){var d=Sa("Computer",a),e=Sa("Debugger",a);if(d){var f=Ou(d,!0),g=d.I?JSON.stringify(d.I):null;b||(b="/versions/pcx86/1.33.1/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,Hj:g}))return!0;ta(b,null,!0,function(c,d,e){bv(c,d,e,[a,ha(b,!0),g,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();
|
||||
window.savePC=function(a,b,c){var d=Sa("Computer",a),e=Sa("Debugger",a);if(d){var f=Ou(d,!0),g=d.I?JSON.stringify(d.I):null;b||(b="/versions/pcx86/1.34.0/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,Hj:g}))return!0;ta(b,null,!0,function(c,d,e){bv(c,d,e,[a,ha(b,!0),g,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue