Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 12 from a total of 12 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 19818845 | 580 days ago | IN | 0 ETH | 0.00026057 | ||||
| Buy Now | 19818841 | 580 days ago | IN | 1.5 ETH | 0.00047967 | ||||
| List For Sale To... | 19818822 | 580 days ago | IN | 0 ETH | 0.00084799 | ||||
| Withdraw Bid | 19768595 | 587 days ago | IN | 0 ETH | 0.00093513 | ||||
| Withdraw | 19757767 | 588 days ago | IN | 0 ETH | 0.00013659 | ||||
| Place Bid | 19756149 | 588 days ago | IN | 0.1 ETH | 0.00042352 | ||||
| Place Bid | 19737003 | 591 days ago | IN | 0.069 ETH | 0.00031064 | ||||
| Withdraw | 19736998 | 591 days ago | IN | 0 ETH | 0.00016637 | ||||
| Place Bid | 19736709 | 591 days ago | IN | 0.045 ETH | 0.00032666 | ||||
| Withdraw | 19736273 | 591 days ago | IN | 0 ETH | 0.00018144 | ||||
| Place Bid | 19735112 | 591 days ago | IN | 0.042 ETH | 0.00050984 | ||||
| Place Bid | 19726334 | 593 days ago | IN | 0.025 ETH | 0.00154995 |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Wonderland
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-04-24
*/
// . . . . . . .
// \ \ / / | | |
// \ \ /.-. .--. .-.| .-. .--.| .-. .--. .-.|
// \/ \/( )| |( |(.-' | |( ) | |( |
// ' ' `-' ' `-`-'`-`--'' `-`-'`-' `-`-'`-
//
// SPDX-License-Identifier: MIT
// Copyright Han, 2023
pragma solidity ^0.8.25;
contract Wonderland {
event ArtpieceCreated(address indexed creator);
event ArtpieceTransferred(address indexed oldOwner, address indexed newOwner);
event BidAccepted(uint256 value, address indexed fromAddress, address indexed toAddress);
event BidPlaced(uint256 value, address indexed fromAddress);
event BidWithdrawn(uint256 value, address indexed fromAddress);
event ListedForSale(uint256 value, address indexed fromAddress, address indexed toAddress);
event SaleCanceled(uint256 value, address indexed fromAddress, address indexed toAddress);
event SaleCompleted(uint256 value, address indexed fromAddress, address indexed toAddress);
error FundsTransfer();
error InsufficientFunds();
error ListedForSaleToSpecificAddress();
error NoBid();
error NotForSale();
error NotOwner();
error NotRoyaltyRecipient();
error NotYourBid();
error NullAddress();
error RoyaltyTooHigh();
string public constant MANIFEST = (
'Wake up.' '\n'
);
string public constant CORE = (
'"use strict";let s={signature:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjE2IiBoZWlnaHQ9IjIxNiIgdmlld0JveD0iMCAwIDIxNiAyMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xMjAgOTZIOTZWMTIwSDEyMFY5NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjE2IDEwOEMyMTYgMTY3LjY0OCAxNjcuNjQ4IDIxNiAxMDggMjE2QzQ4LjM1MTYgMjE2IDAgMTY3LjY0OCAwIDEwOEMwIDQ4LjM1MTYgNDguMzUxNiAwIDEwOCAwQzE2Ny42NDggMCAyMTYgNDguMzUxNiAyMTYgMTA4Wk0yMDAgMTA4QzIwMCAxNTguODA5IDE1OC44MDkgMjAwIDEwOCAyMDBDNTcuMTkxNCAyMDAgMTYgMTU4LjgwOSAxNiAxMDhDMTYgNTcuMTkxNCA1Ny4xOTE0IDE2IDEwOCAxNkMxNTguODA5IDE2IDIwMCA1Ny4xOTE0IDIwMCAxMDhaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K",mouse_sensitivity:.6,mouse_limit:0,frame:0,res:[0,0],save_frames:0};window.h={newline:String.fromCharCode(10),parser:new URL(window.location)};const mobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);let w=window,d=document,b=d.body;d.body.style.touchAction="none",d.body.style.userSelect="none";let c=d.createElement("canvas");c.style.display="block",b.appendChild(c);const image=d.createElement("img");image.src=s.signature.trim(),image.style.cssText="width:40px;z-index:50;position:fixed;bottom:20px;right:20px;",b.appendChild(image);const CREDITS="I am grateful to Dima, WillStall, and IQ (sdf), Demofox (Refraction) for making this piece possible, you are wizards. - Han";console.log(CREDITS);const glOptions={powerPreference:"high-performance"};mobile&&delete glOptions.powerPreference,w.gl=c.getContext("webgl2",glOptions),h.uniform1i=(e,t)=>h.uniform(e,t,"uniform1i"),h.uniform=(e,t,r)=>{s.uniforms||={};(s.uniforms[e]||=(()=>{const i=gl.getUniformLocation(s.current_program,e),o=r||(Array.isArray(t)?"uniform2fv":"uniform1f");return{update:e=>gl[o](i,e)}})()).update(t)},h.resize=()=>{let e,t,r,i={x:h.ix.mouse.x/s.res[0],y:h.ix.mouse.y/s.res[1]};const o=h.parser.searchParams.get("res",t);o?(e=t=o,r=1):(e=w.innerWidth,t=w.innerHeight,s.aspect&&(e>t*s.aspect?e=t*s.aspect:t=e/s.aspect),r=w.devicePixelRatio),s.res[0]=c.width=e*r,s.res[1]=c.height=t*r,c.style.width=e+"px",c.style.height=t+"px",h.ix.set(c.width*i.x,c.height*i.y)},h.ix={start:{x:0,y:0},mouse:{x:0,y:0}},h.ix.set=(e,t)=>{h.ix.mouse={x:e,y:t}},h.ix.start=e=>{h.ix.start.x=e.clientX,h.ix.start.y=e.clientY,d.addEventListener("pointermove",h.ix.move)},h.clamp=(e,t,r)=>Math.max(t,Math.min(r,e)),h.ix.move=e=>{h.ix.mouse.x+=(e.clientX-h.ix.start.x)*window.devicePixelRatio*s.mouse_sensitivity,h.ix.mouse.y-=(e.clientY-h.ix.start.y)*window.devicePixelRatio*s.mouse_sensitivity,h.ix.start.x=e.clientX,h.ix.start.y=e.clientY,h.ix.mouse.x=h.clamp(h.ix.mouse.x,s.res[0]*s.mouse_limit,s.res[0]*(1-s.mouse_limit)),h.ix.mouse.y=h.clamp(h.ix.mouse.y,s.res[1]*s.mouse_limit,s.res[1]*(1-s.mouse_limit))},h.ix.stop=()=>{d.removeEventListener("pointermove",h.ix.move)},h.save={},h.save.toImage=()=>{const e=new Date;let t=String(e.getFullYear()).slice(2,4)+"-"+e.getMonth()+"-"+e.getDate()+" ("+s.frame+").png",r=document.createElement("a");r.setAttribute("download",t);let i=c.toDataURL("image/png").replace("data:image/png","data:application/octet-stream");r.setAttribute("href",i),r.click(),r.remove()},h.buildShader=(e,t)=>{let r=gl.createShader(e);return gl.shaderSource(r,t),gl.compileShader(r),r},h.initProgram=(e,t,r)=>{const i=gl.createProgram(),o=h.buildShader(gl.VERTEX_SHADER,t),a=h.buildShader(gl.FRAGMENT_SHADER,e);gl.attachShader(i,o),gl.attachShader(i,a),gl.linkProgram(i),gl.getShaderParameter(o,gl.COMPILE_STATUS)||console.error("V: "+gl.getShaderInfoLog(o)),gl.getShaderParameter(a,gl.COMPILE_STATUS)||console.error("F: "+gl.getShaderInfoLog(a)),gl.getProgramParameter(i,gl.LINK_STATUS)||console.error("P: "+gl.getProgramInfoLog(i));let s=gl.createBuffer(),c=gl.getAttribLocation(i,"p");return gl.bindBuffer(gl.ARRAY_BUFFER,s),gl.bufferData(gl.ARRAY_BUFFER,r,gl.STATIC_DRAW),gl.enableVertexAttribArray(c),gl.vertexAttribPointer(c,2,gl.FLOAT,!1,0,0),i},s.pixel=new Uint8Array(4),h.render=()=>{gl.viewport(0,0,c.width,c.height),gl.useProgram(s.program),s.current_program=s.program,s.frame<s.save_frames?h.uniform("u_time",.01667*s.frame):h.uniform("u_time",.001*performance.now()),h.uniform("u_resolution",s.res),h.uniform("u_mouse",[h.ix.mouse.x,h.ix.mouse.y]),gl.drawArrays(gl.TRIANGLE_STRIP,0,4),gl.readPixels(0,0,1,1,gl.RGBA,gl.UNSIGNED_BYTE,s.pixel),(h.save.queued||s.frame<s.save_frames&&s.frame>3)&&(h.save.queued=!1,h.save.toImage()),s.frame++,requestAnimationFrame(h.render)};const init=async()=>{if(gl){h.resize(),h.ix.set(c.width/2,c.height/2),d.addEventListener("pointerdown",h.ix.start),d.addEventListener("pointerup",h.ix.stop),w.addEventListener("resize",h.resize),s.save_frames=h.parser.searchParams.get("frames")||0,d.addEventListener("keyup",(e=>{if(!(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey))switch(e.key){case"f":const e=prompt("Frames to render",s.save_frames);h.parser.searchParams.set("frames",e),window.location=h.parser.href;break;case"r":const t=prompt("Canvas size in pixels (max 8192)",c.height);t>=8&&t<=8192&&(h.parser.searchParams.set("res",t),window.location=h.parser.href);break;case"s":h.save.queued=!0}}));let e=Float32Array.of(-1,1,-1,-1,1,1,1,-1);const t="#version 300 es"+h.newline+"precision highp float; in vec2 p; void main(){ gl_Position =vec4(p,1.0,1.0); }";let r="precision highp float;out vec4 fragColor;const int AA=2;uniform vec2 u_resolution;uniform float u_time;uniform vec2 u_mouse;const vec3 v=vec3(.909803921568627),f=vec3(.8);const vec3 d=vec3(0,0,-.2);vec3 t(){vec3 v=gl_FragCoord.xyy,f;v=vec3(dot(v,vec3(127.1,311.7,74.7)),dot(v,vec3(269.5,183.3,246.1)),dot(v,vec3(113.5,271.9,124.6)));f=-1.+2.*fract(sin(v)*43758.5453123);return fract(555.*sin(777.*f))/256.;}vec3 t(vec3 v){v+=t();return v;}float s(vec2 v){return fract(sin(dot(v.xy,vec2(12.9898,78.233)))*43758.5453123);}vec3 s(vec3 v,vec4 f){return v+2.*cross(f.xyz,cross(f.xyz,v)+v*f.w);}vec3 t(vec3 v,float f){return s(v,vec4(sin(f/2.),0,0,cos(f/2.)));}vec3 n(vec3 v,float f){return s(v,vec4(0,sin(f/2.),0,cos(f/2.)));}vec3 m(vec3 v,float f){return s(v,vec4(0,0,sin(f/2.),cos(f/2.)));}float m(vec3 v,vec3 f,vec3 m){vec3 i=v-f,x=m-f;return length(i-x*clamp(dot(i,x)/dot(x,x),0.,1.))-.4;}float n(vec3 v,vec3 f,vec3 m){vec3 x=m-f,d=v-f;float y=dot(x,x),s=dot(d,x),c=length(d*y-x*s)-8.*y,a=abs(s-y*.5)-y*.5,i=c*c,o=a*a*y,A=max(c,a)<0.?-min(i,o):(c>0.?i:0.)+(a>0.?o:0.);return sign(A)*sqrt(abs(A))/y;}vec2 x(vec2 v,float f){vec2 i;float y=s(v)-.5;i.x=2.*acos(-1.)*y;i.y=1.+round(s(v)*(f-1.));i.y*=2.*mod(round(y*10.),2.)-1.;return i;}void m(float v,vec2 f,out vec3 i,out vec3 d,out float r){vec2 u=u_mouse.xy/u_resolution.xy,y;u-=.5;v+=u.x*10.;v-=u.y*5.;float c=f.x+f.y*6.,o,A;y=vec2(c,c*-.5);r=sin(v+2.*acos(-1.)*s(y)-3.14159)*.2;o=cos(v*round(3.))*.2;A=sin(v*round(3.))*.2;i=vec3(o,-.3705,A);d=vec3(-o,.3705,-A);{vec2 a=x(y,2.);i=t(i,v*a.y+a.x);d=t(d,v*a.y+a.x);}{vec2 a=x(y*.75,1.);i=n(i,v*a.y+a.x);d=n(d,v*a.y+a.x);}{vec2 a=x(y*.55,1.);i=m(i,v*a.y+a.x);d=m(d,v*a.y+a.x);}i.y+=r;d.y+=r;}vec2 s(vec3 v,float f,vec2 x){float i=1e3,y,d,o,r,c,A;vec3 s,a,u;m(f,x,s,a,y);d=m(v,s,a);s+=10.*(s-a);u=vec3(0,y,0);o=n(v,u,s);r=max(d,o);i=min(i,r);c=max(-r,d);i=min(i,c);A=0.;if(i==r)A=1.;else if(i==c)A=2.;return vec2(i,A);}vec2 m(vec3 v,vec3 f,float i,vec2 x){float y=0.,r=-1.;for(int d=0;d<32;d++){vec3 c=v+f*y;vec2 a=s(c,i,x);r=a.y;y+=a.x*-1.;if(abs(a.x)<.001||y>1e3)break;}return vec2(y,r);}float n(vec3 v,vec3 f,vec3 i,vec3 y,out float x){vec3 d=y-i,c=v-i;float a=dot(d,d),s=dot(d,f),A=dot(d,c),o=a-s*s,r=a*dot(f,c)-A*s,u=a*dot(c,c)-A*A-.16*a,m=r*r-o*u;if(m>=0.){float n=(-r-sqrt(m))/o,g=A+n*s;if(g>0.&&g<a)return x=g<a/2.?0.:1.,n;vec3 z=g<=0.?c:v-y;r=dot(f,z);u=dot(z,z)-.16;m=r*r-u;if(m>0.)return x=g<=0.?0.:1.,-r-sqrt(m);}return-1.;}vec3 t(vec3 v,vec3 f,vec3 x){vec3 i=x-f,d=v-f;return(d-clamp(dot(d,i)/dot(i,i),0.,1.)*i)/.4;}vec2 s(vec3 v,vec3 f,float i,vec2 d,out vec3 x){float c=1e3,y,o,r;vec3 s,A;m(i,d,s,A,y);r=n(v,f,s,A,o);if(r>0.)x=t(v+r*f,s,A),c=r;return vec2(c,o);}vec3 m(){return mix(f,v,1.);}float i(vec3 v,vec3 f){float y=-.2/2.2,i,d;y*=y;i=-dot(f,v);d=1.-i;return y+(1.-y)*pow(d,5.);}vec3 i(vec3 v,vec3 f,vec3 i,float d,vec2 x){f=refract(f,i,1./1.2);v+=-i*.01*1.5;vec2 a=m(v,f,d,x);return a.x<0.?vec3(1,0,0):m()*exp(-vec3(.33)*a.x);}vec3 t(inout vec3 y,inout vec3 x,float a,float c,vec2 o){vec3 A,r,u;vec2 n=s(y,x,c,o,A),z=n;r=y+z.x*x;u=m();if(z.x<1e3){float g=c*2.,e,k;vec3 h=d,t;h+=vec3(cos(g),sin(g),d.z)*8.;t=normalize(h-r);e=max(0.,dot(A,t));k=3.*pow(1.-clamp(dot(A,-x),0.,1.),1.35);k=max(0.,k);if(z.y==0.){u=vec3(e+k);vec3 l=i(r,x,A,c,o);float p=clamp(i(x,A),0.,1.);u+=mix(l,f,p);u=mix(f,v,u.x);}else if(z.y==1.)u=mix(f,v,e+k);}return u;}vec3 p(float v,float f){float a=sin(f);return vec3(21.78*a*cos(v),21.78*cos(f),21.78*a*sin(v));}mat3 r(vec3 v,vec2 f){vec3 i=normalize(vec3(0)-v),d=normalize(cross(vec3(0,floor(mod(f.y,2.))==0.?-1.:1.,0),i));return mat3(d,normalize(cross(i,d)),i);}void main(){float v=u_time,f,i,d,x;vec3 y=vec3(0),c;vec2 a=vec2(.5),A;a=vec2(0);f=(1.-a.y)*3.14159;i=2.*acos(-1.)*a.x+1.570795;c=p(i,f);c=vec3(0,0,21.78);mat3 u=r(c,a);A=gl_FragCoord.xy;d=.5+.5*sin(A.x*147.)*sin(A.y*131.);x=.3*smoothstep(0.,1.,sin(2.*acos(-1.)*v/5.));v+=0.;for(int o=0;o<AA;o++)for(int s=0;s<AA;s++){vec2 n=gl_FragCoord.xy;n=(n-.5*u_resolution.xy)/min(u_resolution.x,u_resolution.y);if(abs(n.x)<.42669&&abs(n.y)<.42669){n=(n+.42669)/.85338*6.;vec2 z=floor(vec2(n)),e;n=fract(n)-.5;e=n*.115441447619942;vec3 g=normalize(u*vec3(e,1));float h=v-.15*(float(s*AA+o)+d)/float(AA*AA),k,l=k=2.*acos(-1.)*h/5.;k=2.*acos(-1.)*(h-x)/5.;y.x+=t(c,g,l,k,z).x;k=2.*acos(-1.)*h/5.;y.y+=t(c,g,l,k,z).y;k=2.*acos(-1.)*(h+x)/5.;y.z+=t(c,g,l,k,z).z;}else y+=m();}y/=float(AA*AA);y=t(y);fragColor=vec4(y,1);}";if(r="#version 300 es"+h.newline+r,mobile){const e="const int AA=2";r=r.replace(e,"const int AA=1")}window.program=s.program=h.initProgram(r,t,e),h.render()}else{const e=d.createElement("div");e.style.cssText="align-items:center;background:#969696;color:#fff;display:flex;font-family:monospace;font-size:20px;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;",e.innerHTML="Your browser does not support WebGL.",b.append(e)}};init();'
);
modifier onlyOwner() {
if (owner != msg.sender) {
revert NotOwner();
}
_;
}
modifier onlyRoyaltyRecipient() {
if (royaltyRecipient != msg.sender) {
revert NotRoyaltyRecipient();
}
_;
}
struct Offer {
bool active;
uint256 value;
address toAddress;
}
struct Bid {
bool active;
uint256 value;
address fromAddress;
}
address public owner;
Offer public currentOffer;
Bid public currentBid;
address public royaltyRecipient;
uint256 public royaltyPercentage;
mapping (address => uint256) public pendingWithdrawals;
constructor(uint256 _royaltyPercentage) {
if (_royaltyPercentage >= 100) {
revert RoyaltyTooHigh();
}
owner = msg.sender;
royaltyRecipient = msg.sender;
royaltyPercentage = _royaltyPercentage;
emit ArtpieceCreated(msg.sender);
}
function name() public view virtual returns (string memory) {
return 'Wonderland';
}
function symbol() public view virtual returns (string memory) {
return 'W';
}
function artpiece() public view virtual returns (string memory) {
return string.concat(
'<!DOCTYPE html>'
'<html>'
'<head>'
'<title>', 'Wonderland', '</title>'
'<meta name="viewport" content="width=device-width, initial-scale=1" />'
'<style>html,body{background:#969696;margin:0;padding:0;overflow:hidden;}</style>'
'</head>'
'<body>'
'<script type="text/javascript">',
CORE,
'</script>'
'</body>'
'</html>'
);
}
function withdraw() public {
uint256 amount = pendingWithdrawals[msg.sender];
pendingWithdrawals[msg.sender] = 0;
_sendFunds(amount);
}
function transferOwnership(address newOwner) public onlyOwner {
if (newOwner == address(0)) {
revert NullAddress();
}
_transferOwnership(newOwner);
if (currentBid.fromAddress == newOwner) {
uint256 amount = currentBid.value;
currentBid = Bid({ active: false, value: 0, fromAddress: address(0) });
pendingWithdrawals[newOwner] += amount;
}
if (currentOffer.active) {
currentOffer = Offer({ active: false, value: 0, toAddress: address(0) });
}
}
function listForSale(uint256 salePriceInWei) public onlyOwner {
currentOffer = Offer({ active: true, value: salePriceInWei, toAddress: address(0) });
emit ListedForSale(salePriceInWei, msg.sender, address(0));
}
function listForSaleToAddress(uint256 salePriceInWei, address toAddress) public onlyOwner {
currentOffer = Offer({ active: true, value: salePriceInWei, toAddress: toAddress });
emit ListedForSale(salePriceInWei, msg.sender, toAddress);
}
function cancelFromSale() public onlyOwner {
Offer memory oldOffer = currentOffer;
currentOffer = Offer({ active: false, value: 0, toAddress: address(0) });
emit SaleCanceled(oldOffer.value, msg.sender, oldOffer.toAddress);
}
function buyNow() public payable {
if (!currentOffer.active) {
revert NotForSale();
}
if (currentOffer.toAddress != address(0) && currentOffer.toAddress != msg.sender) {
revert ListedForSaleToSpecificAddress();
}
if (msg.value != currentOffer.value) {
revert InsufficientFunds();
}
currentOffer = Offer({ active: false, value: 0, toAddress: address(0) });
uint256 royaltyAmount = _calcRoyalty(msg.value);
pendingWithdrawals[owner] += msg.value - royaltyAmount;
pendingWithdrawals[royaltyRecipient] += royaltyAmount;
emit SaleCompleted(msg.value, owner, msg.sender);
_transferOwnership(msg.sender);
}
function placeBid() public payable {
if (msg.value <= currentBid.value) {
revert InsufficientFunds();
}
if (currentBid.value > 0) {
pendingWithdrawals[currentBid.fromAddress] += currentBid.value;
}
currentBid = Bid({ active: true, value: msg.value, fromAddress: msg.sender });
emit BidPlaced(msg.value, msg.sender);
}
function acceptBid() public onlyOwner {
if (!currentBid.active) {
revert NoBid();
}
uint256 amount = currentBid.value;
address bidder = currentBid.fromAddress;
currentOffer = Offer({ active: false, value: 0, toAddress: address(0) });
currentBid = Bid({ active: false, value: 0, fromAddress: address(0) });
uint256 royaltyAmount = _calcRoyalty(amount);
pendingWithdrawals[owner] += amount - royaltyAmount;
pendingWithdrawals[royaltyRecipient] += royaltyAmount;
emit BidAccepted(amount, owner, bidder);
_transferOwnership(bidder);
}
function withdrawBid() public {
if (msg.sender != currentBid.fromAddress) {
revert NotYourBid();
}
uint256 amount = currentBid.value;
currentBid = Bid({ active: false, value: 0, fromAddress: address(0) });
_sendFunds(amount);
emit BidWithdrawn(amount, msg.sender);
}
function setRoyaltyRecipient(address newRoyaltyRecipient) public onlyRoyaltyRecipient {
if (newRoyaltyRecipient == address(0)) {
revert NullAddress();
}
royaltyRecipient = newRoyaltyRecipient;
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = owner;
owner = newOwner;
emit ArtpieceTransferred(oldOwner, newOwner);
}
function _sendFunds(uint256 amount) internal virtual {
(bool success, ) = msg.sender.call{value: amount}('');
if (!success) {
revert FundsTransfer();
}
}
function _calcRoyalty(uint256 amount) internal virtual returns (uint256) {
return (amount * royaltyPercentage) / 100;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"_royaltyPercentage","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"FundsTransfer","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"ListedForSaleToSpecificAddress","type":"error"},{"inputs":[],"name":"NoBid","type":"error"},{"inputs":[],"name":"NotForSale","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotRoyaltyRecipient","type":"error"},{"inputs":[],"name":"NotYourBid","type":"error"},{"inputs":[],"name":"NullAddress","type":"error"},{"inputs":[],"name":"RoyaltyTooHigh","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"creator","type":"address"}],"name":"ArtpieceCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"ArtpieceTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"BidAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"}],"name":"BidPlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"}],"name":"BidWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"ListedForSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"SaleCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"SaleCompleted","type":"event"},{"inputs":[],"name":"CORE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MANIFEST","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"artpiece","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyNow","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"cancelFromSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentBid","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"fromAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentOffer","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"toAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"salePriceInWei","type":"uint256"}],"name":"listForSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"salePriceInWei","type":"uint256"},{"internalType":"address","name":"toAddress","type":"address"}],"name":"listForSaleToAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pendingWithdrawals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"royaltyPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRoyaltyRecipient","type":"address"}],"name":"setRoyaltyRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawBid","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052348015600e575f80fd5b506040516138e13803806138e1833981016040819052602b91609d565b60648110604b5760405163c2b03beb60e01b815260040160405180910390fd5b5f8054336001600160a01b031991821681178355600780549092168117909155600883905560405190917fcaea53471edbf6ace3d253c1bdecf4553374dd40c18148776b57bf5af0f7f02f91a25060b3565b5f6020828403121560ac575f80fd5b5051919050565b613821806100c05f395ff3fe608060405260043610610126575f3560e01c80638a71bb2d116100a8578063def181011161006d578063def181011461030e578063e52a78741461035e578063ecfc7ecc14610372578063f2fde38b1461037a578063f3f4370314610399578063fa4e28f6146103c4575f80fd5b80638a71bb2d1461027d5780638da5cb5b146102a057806395d89b41146102be5780639c3962f0146102e7578063c7857fb5146102ef575f80fd5b80633ccfd60b116100ee5780633ccfd60b146101eb57806341e42f30146101ff57806342c472171461021e5780634c00de82146102325780636b6c077414610269575f80fd5b806306fdde031461012a5780630dca550e1461016e57806337271cc71461018f57806337a908fc146101a357806338739dad146101b7575b5f80fd5b348015610135575f80fd5b5060408051808201909152600a81526915dbdb99195c9b185b9960b21b60208201525b6040516101659190610d7d565b60405180910390f35b348015610179575f80fd5b5061018d610188366004610dcd565b6103ee565b005b34801561019a575f80fd5b5061018d61049e565b3480156101ae575f80fd5b50610158610545565b3480156101c2575f80fd5b50610158604051806040016040528060098152602001682bb0b5b2903ab8170560b91b81525081565b3480156101f6575f80fd5b5061018d610587565b34801561020a575f80fd5b5061018d610219366004610df7565b6105a6565b348015610229575f80fd5b5061018d61061a565b34801561023d575f80fd5b50600754610251906001600160a01b031681565b6040516001600160a01b039091168152602001610165565b348015610274575f80fd5b506101586106f2565b348015610288575f80fd5b5061029260085481565b604051908152602001610165565b3480156102ab575f80fd5b505f54610251906001600160a01b031681565b3480156102c9575f80fd5b506040805180820190915260018152605760f81b6020820152610158565b61018d610711565b3480156102fa575f80fd5b5061018d610309366004610e17565b61088b565b348015610319575f80fd5b506004546005546006546103389260ff1691906001600160a01b031683565b60408051931515845260208401929092526001600160a01b031690820152606001610165565b348015610369575f80fd5b5061018d610924565b61018d610ab3565b348015610385575f80fd5b5061018d610394366004610df7565b610b87565b3480156103a4575f80fd5b506102926103b3366004610df7565b60096020525f908152604090205481565b3480156103cf575f80fd5b506001546002546003546103389260ff1691906001600160a01b031683565b5f546001600160a01b03163314610418576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018590526001600160a01b038416918301829052805460ff1916811790556002849055600380546001600160a01b03191682179055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906104929086815260200190565b60405180910390a35050565b6006546001600160a01b031633146104c95760405163173f0e6f60e21b815260040160405180910390fd5b60058054604080516060810182525f8082526020820181905291018190526004805460ff19169055909155600680546001600160a01b031916905561050d81610ca3565b60405181815233907f5e9c7ae3229b2cda5065d7058fcc05765c695c29ce05313fbe96cb2ca639231a9060200160405180910390a250565b60606040518061280001604052806127d381526020016110196127d391396040516020016105739190610e2e565b604051602081830303815290604052905090565b335f90815260096020526040812080549190556105a381610ca3565b50565b6007546001600160a01b031633146105d157604051631229bf3760e11b815260040160405180910390fd5b6001600160a01b0381166105f85760405163e99d5ac560e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610644576040516330cd747160e01b815260040160405180910390fd5b60408051606080820183526001805460ff811615158452600280546020808701918252600380546001600160a01b038082168a8c019081528b51998a018c525f808b52948a01859052988b0184905260ff1990961690965592556001600160a01b03199093169055915190519351929391169133917ff1f48fe426adbd884772d4c165015a460df54458ff7e238dff36fe3c5d341ccf916106e791815260200190565b60405180910390a350565b6040518061280001604052806127d381526020016110196127d3913981565b60015460ff1661073457604051631d99ddbf60e01b815260040160405180910390fd5b6003546001600160a01b03161580159061075957506003546001600160a01b03163314155b156107775760405163d6da33db60e01b815260040160405180910390fd5b60025434146107995760405163356680b760e01b815260040160405180910390fd5b604080516060810182525f8082526020820181905291018190526001805460ff191690556002819055600380546001600160a01b03191690556107db34610d0d565b90506107e78134610fbc565b5f80546001600160a01b03168152600960205260408120805490919061080e908490610fcf565b90915550506007546001600160a01b03165f908152600960205260408120805483929061083c908490610fcf565b90915550505f5460405134815233916001600160a01b0316907fdb87be53c711a1eb193f5fffddcfd85425990853a8423fa2bfd4a8620c218ed49060200160405180910390a36105a333610d2e565b5f546001600160a01b031633146108b5576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018490525f918301829052805460ff1916811790556002839055600380546001600160a01b0319169055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906106e79085815260200190565b5f546001600160a01b0316331461094e576040516330cd747160e01b815260040160405180910390fd5b60045460ff16610971576040516313650ef160e11b815260040160405180910390fd5b600580546006805460408051606080820183525f80835260208084018290529284018190526001805460ff199081169091556002829055600380546001600160a01b031990811690915585519384018652828452938301829052919093018390526004805490911690559481905593811690915590916001600160a01b03909116906109fc83610d0d565b9050610a088184610fbc565b5f80546001600160a01b031681526009602052604081208054909190610a2f908490610fcf565b90915550506007546001600160a01b03165f9081526009602052604081208054839290610a5d908490610fcf565b90915550505f546040518481526001600160a01b038481169216907fd32f7ef8c20232133e4dbd098b49d6b86ab580eee8a90a815925e900584749639060200160405180910390a3610aae82610d2e565b505050565b6005543411610ad55760405163356680b760e01b815260040160405180910390fd5b60055415610b0f576005546006546001600160a01b03165f9081526009602052604081208054909190610b09908490610fcf565b90915550505b604080516060810182526001808252346020808401829052339385018490526004805460ff19169093179092556005819055600680546001600160a01b03191684179055925192835290917f5445de3f4fe13efb115ec05c57e09cc0e277801d0cd2ae780457ebcd8688c391910160405180910390a2565b5f546001600160a01b03163314610bb1576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610bd85760405163e99d5ac560e01b815260040160405180910390fd5b610be181610d2e565b6006546001600160a01b03808316911603610c5e5760058054604080516060810182525f80825260208083018290529183018190526004805460ff1916905593849055600680546001600160a01b03191690556001600160a01b0385168452600990528220805491928392610c57908490610fcf565b9091555050505b60015460ff16156105a357604080516060810182525f8082526020820181905291018190526001805460ff19169055600255600380546001600160a01b031916905550565b6040515f90339083908381818185875af1925050503d805f8114610ce2576040519150601f19603f3d011682016040523d82523d5f602084013e610ce7565b606091505b5050905080610d09576040516342bb570960e01b815260040160405180910390fd5b5050565b5f606460085483610d1e9190610fe2565b610d289190610ff9565b92915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fb0594827696749bdc48b310d4a5cfee5e9a89491f1c6bea2b928c2c33db414de9190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610dc8575f80fd5b919050565b5f8060408385031215610dde575f80fd5b82359150610dee60208401610db2565b90509250929050565b5f60208284031215610e07575f80fd5b610e1082610db2565b9392505050565b5f60208284031215610e27575f80fd5b5035919050565b7f3c21444f43545950452068746d6c3e3c68746d6c3e3c686561643e3c7469746c815261329f60f11b60208201526915dbdb99195c9b185b9960b21b60228201527f3c2f7469746c653e3c6d657461206e616d653d2276696577706f72742220636f602c8201527f6e74656e743d2277696474683d6465766963652d77696474682c20696e697469604c8201527f616c2d7363616c653d3122202f3e3c7374796c653e68746d6c2c626f64797b62606c8201527f61636b67726f756e643a233936393639363b6d617267696e3a303b7061646469608c8201527f6e673a303b6f766572666c6f773a68696464656e3b7d3c2f7374796c653e3c2f60ac8201527f686561643e3c626f64793e3c73637269707420747970653d22746578742f6a6160cc820152693b30b9b1b934b83a111f60b11b60ec8201525f8251806020850160f685015e7f3c2f7363726970743e3c2f626f64793e3c2f68746d6c3e000000000000000000920160f68101929092525061010d01919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d2857610d28610fa8565b80820180821115610d2857610d28610fa8565b8082028115828204841417610d2857610d28610fa8565b5f8261101357634e487b7160e01b5f52601260045260245ffd5b50049056fe2275736520737472696374223b6c657420733d7b7369676e61747572653a22646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423361575230614430694d6a45324969426f5a576c6e61485139496a49784e694967646d6c6c64304a76654430694d434177494449784e6941794d54596949475a7062477739496d3576626d5569494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a79492b436a78775958526f49475139496b30784d6a41674f545a494f545a574d544977534445794d4659354e6c6f6949475a7062477739496e646f6158526c4969382b436a78775958526f49475a7062477774636e56735a5430695a585a6c626d396b5a43496759327870634331796457786c50534a6c646d56756232526b4969426b50534a4e4d6a4532494445774f454d794d5459674d5459334c6a59304f4341784e6a63754e6a5134494449784e6941784d4467674d6a4532517a51344c6a4d314d5459674d6a4532494441674d5459334c6a59304f434177494445774f454d77494451344c6a4d314d5459674e4467754d7a55784e694177494445774f434177517a45324e7934324e4467674d4341794d5459674e4467754d7a55784e6941794d5459674d544134576b30794d4441674d544134517a49774d4341784e5467754f444135494445314f4334344d446b674d6a4177494445774f4341794d4442444e5463754d546b784e4341794d4441674d5459674d5455344c6a67774f5341784e6941784d4468444d5459674e5463754d546b784e4341314e7934784f54453049444532494445774f4341784e6b4d784e5467754f44413549444532494449774d4341314e7934784f544530494449774d4341784d4468614969426d6157787350534a3361476c305a53497650676f384c334e325a7a344b222c6d6f7573655f73656e73697469766974793a2e362c6d6f7573655f6c696d69743a302c6672616d653a302c7265733a5b302c305d2c736176655f6672616d65733a307d3b77696e646f772e683d7b6e65776c696e653a537472696e672e66726f6d43686172436f6465283130292c7061727365723a6e65772055524c2877696e646f772e6c6f636174696f6e297d3b636f6e7374206d6f62696c653d2f416e64726f69647c7765624f537c6950686f6e657c695061647c69506f647c426c61636b42657272797c49454d6f62696c657c4f70657261204d696e692f692e74657374286e6176696761746f722e757365724167656e74293b6c657420773d77696e646f772c643d646f63756d656e742c623d642e626f64793b642e626f64792e7374796c652e746f756368416374696f6e3d226e6f6e65222c642e626f64792e7374796c652e7573657253656c6563743d226e6f6e65223b6c657420633d642e637265617465456c656d656e74282263616e76617322293b632e7374796c652e646973706c61793d22626c6f636b222c622e617070656e644368696c642863293b636f6e737420696d6167653d642e637265617465456c656d656e742822696d6722293b696d6167652e7372633d732e7369676e61747572652e7472696d28292c696d6167652e7374796c652e637373546578743d2277696474683a343070783b7a2d696e6465783a35303b706f736974696f6e3a66697865643b626f74746f6d3a323070783b72696768743a323070783b222c622e617070656e644368696c6428696d616765293b636f6e737420435245444954533d224920616d20677261746566756c20746f2044696d612c2057696c6c5374616c6c2c20616e642049512028736466292c2044656d6f666f78202852656672616374696f6e2920666f72206d616b696e67207468697320706965636520706f737369626c652c20796f75206172652077697a617264732e202d2048616e223b636f6e736f6c652e6c6f672843524544495453293b636f6e737420676c4f7074696f6e733d7b706f776572507265666572656e63653a22686967682d706572666f726d616e6365227d3b6d6f62696c65262664656c65746520676c4f7074696f6e732e706f776572507265666572656e63652c772e676c3d632e676574436f6e746578742822776562676c32222c676c4f7074696f6e73292c682e756e69666f726d31693d28652c74293d3e682e756e69666f726d28652c742c22756e69666f726d316922292c682e756e69666f726d3d28652c742c72293d3e7b732e756e69666f726d737c7c3d7b7d3b28732e756e69666f726d735b655d7c7c3d2828293d3e7b636f6e737420693d676c2e676574556e69666f726d4c6f636174696f6e28732e63757272656e745f70726f6772616d2c65292c6f3d727c7c2841727261792e697341727261792874293f22756e69666f726d326676223a22756e69666f726d316622293b72657475726e7b7570646174653a653d3e676c5b6f5d28692c65297d7d292829292e7570646174652874297d2c682e726573697a653d28293d3e7b6c657420652c742c722c693d7b783a682e69782e6d6f7573652e782f732e7265735b305d2c793a682e69782e6d6f7573652e792f732e7265735b315d7d3b636f6e7374206f3d682e7061727365722e736561726368506172616d732e6765742822726573222c74293b6f3f28653d743d6f2c723d31293a28653d772e696e6e657257696474682c743d772e696e6e65724865696768742c732e617370656374262628653e742a732e6173706563743f653d742a732e6173706563743a743d652f732e617370656374292c723d772e646576696365506978656c526174696f292c732e7265735b305d3d632e77696474683d652a722c732e7265735b315d3d632e6865696768743d742a722c632e7374796c652e77696474683d652b227078222c632e7374796c652e6865696768743d742b227078222c682e69782e73657428632e77696474682a692e782c632e6865696768742a692e79297d2c682e69783d7b73746172743a7b783a302c793a307d2c6d6f7573653a7b783a302c793a307d7d2c682e69782e7365743d28652c74293d3e7b682e69782e6d6f7573653d7b783a652c793a747d7d2c682e69782e73746172743d653d3e7b682e69782e73746172742e783d652e636c69656e74582c682e69782e73746172742e793d652e636c69656e74592c642e6164644576656e744c697374656e65722822706f696e7465726d6f7665222c682e69782e6d6f7665297d2c682e636c616d703d28652c742c72293d3e4d6174682e6d617828742c4d6174682e6d696e28722c6529292c682e69782e6d6f76653d653d3e7b682e69782e6d6f7573652e782b3d28652e636c69656e74582d682e69782e73746172742e78292a77696e646f772e646576696365506978656c526174696f2a732e6d6f7573655f73656e73697469766974792c682e69782e6d6f7573652e792d3d28652e636c69656e74592d682e69782e73746172742e79292a77696e646f772e646576696365506978656c526174696f2a732e6d6f7573655f73656e73697469766974792c682e69782e73746172742e783d652e636c69656e74582c682e69782e73746172742e793d652e636c69656e74592c682e69782e6d6f7573652e783d682e636c616d7028682e69782e6d6f7573652e782c732e7265735b305d2a732e6d6f7573655f6c696d69742c732e7265735b305d2a28312d732e6d6f7573655f6c696d697429292c682e69782e6d6f7573652e793d682e636c616d7028682e69782e6d6f7573652e792c732e7265735b315d2a732e6d6f7573655f6c696d69742c732e7265735b315d2a28312d732e6d6f7573655f6c696d697429297d2c682e69782e73746f703d28293d3e7b642e72656d6f76654576656e744c697374656e65722822706f696e7465726d6f7665222c682e69782e6d6f7665297d2c682e736176653d7b7d2c682e736176652e746f496d6167653d28293d3e7b636f6e737420653d6e657720446174653b6c657420743d537472696e6728652e67657446756c6c596561722829292e736c69636528322c34292b222d222b652e6765744d6f6e746828292b222d222b652e6765744461746528292b222028222b732e6672616d652b22292e706e67222c723d646f63756d656e742e637265617465456c656d656e7428226122293b722e7365744174747269627574652822646f776e6c6f6164222c74293b6c657420693d632e746f4461746155524c2822696d6167652f706e6722292e7265706c6163652822646174613a696d6167652f706e67222c22646174613a6170706c69636174696f6e2f6f637465742d73747265616d22293b722e736574417474726962757465282268726566222c69292c722e636c69636b28292c722e72656d6f766528297d2c682e6275696c645368616465723d28652c74293d3e7b6c657420723d676c2e6372656174655368616465722865293b72657475726e20676c2e736861646572536f7572636528722c74292c676c2e636f6d70696c655368616465722872292c727d2c682e696e697450726f6772616d3d28652c742c72293d3e7b636f6e737420693d676c2e63726561746550726f6772616d28292c6f3d682e6275696c6453686164657228676c2e5645525445585f5348414445522c74292c613d682e6275696c6453686164657228676c2e465241474d454e545f5348414445522c65293b676c2e61747461636853686164657228692c6f292c676c2e61747461636853686164657228692c61292c676c2e6c696e6b50726f6772616d2869292c676c2e676574536861646572506172616d65746572286f2c676c2e434f4d50494c455f535441545553297c7c636f6e736f6c652e6572726f722822563a20222b676c2e676574536861646572496e666f4c6f67286f29292c676c2e676574536861646572506172616d6574657228612c676c2e434f4d50494c455f535441545553297c7c636f6e736f6c652e6572726f722822463a20222b676c2e676574536861646572496e666f4c6f67286129292c676c2e67657450726f6772616d506172616d6574657228692c676c2e4c494e4b5f535441545553297c7c636f6e736f6c652e6572726f722822503a20222b676c2e67657450726f6772616d496e666f4c6f67286929293b6c657420733d676c2e63726561746542756666657228292c633d676c2e6765744174747269624c6f636174696f6e28692c227022293b72657475726e20676c2e62696e6442756666657228676c2e41525241595f4255464645522c73292c676c2e6275666665724461746128676c2e41525241595f4255464645522c722c676c2e5354415449435f44524157292c676c2e656e61626c6556657274657841747472696241727261792863292c676c2e766572746578417474726962506f696e74657228632c322c676c2e464c4f41542c21312c302c30292c697d2c732e706978656c3d6e65772055696e743841727261792834292c682e72656e6465723d28293d3e7b676c2e76696577706f727428302c302c632e77696474682c632e686569676874292c676c2e75736550726f6772616d28732e70726f6772616d292c732e63757272656e745f70726f6772616d3d732e70726f6772616d2c732e6672616d653c732e736176655f6672616d65733f682e756e69666f726d2822755f74696d65222c2e30313636372a732e6672616d65293a682e756e69666f726d2822755f74696d65222c2e3030312a706572666f726d616e63652e6e6f772829292c682e756e69666f726d2822755f7265736f6c7574696f6e222c732e726573292c682e756e69666f726d2822755f6d6f757365222c5b682e69782e6d6f7573652e782c682e69782e6d6f7573652e795d292c676c2e6472617741727261797328676c2e545249414e474c455f53545249502c302c34292c676c2e72656164506978656c7328302c302c312c312c676c2e524742412c676c2e554e5349474e45445f425954452c732e706978656c292c28682e736176652e7175657565647c7c732e6672616d653c732e736176655f6672616d65732626732e6672616d653e3329262628682e736176652e7175657565643d21312c682e736176652e746f496d6167652829292c732e6672616d652b2b2c72657175657374416e696d6174696f6e4672616d6528682e72656e646572297d3b636f6e737420696e69743d6173796e6328293d3e7b696628676c297b682e726573697a6528292c682e69782e73657428632e77696474682f322c632e6865696768742f32292c642e6164644576656e744c697374656e65722822706f696e746572646f776e222c682e69782e7374617274292c642e6164644576656e744c697374656e65722822706f696e7465727570222c682e69782e73746f70292c772e6164644576656e744c697374656e65722822726573697a65222c682e726573697a65292c732e736176655f6672616d65733d682e7061727365722e736561726368506172616d732e67657428226672616d657322297c7c302c642e6164644576656e744c697374656e657228226b65797570222c28653d3e7b6966282128652e6374726c4b65797c7c652e616c744b65797c7c652e73686966744b65797c7c652e6d6574614b6579292973776974636828652e6b6579297b636173652266223a636f6e737420653d70726f6d707428224672616d657320746f2072656e646572222c732e736176655f6672616d6573293b682e7061727365722e736561726368506172616d732e73657428226672616d6573222c65292c77696e646f772e6c6f636174696f6e3d682e7061727365722e687265663b627265616b3b636173652272223a636f6e737420743d70726f6d7074282243616e7661732073697a6520696e20706978656c7320286d6178203831393229222c632e686569676874293b743e3d382626743c3d38313932262628682e7061727365722e736561726368506172616d732e7365742822726573222c74292c77696e646f772e6c6f636174696f6e3d682e7061727365722e68726566293b627265616b3b636173652273223a682e736176652e7175657565643d21307d7d29293b6c657420653d466c6f6174333241727261792e6f66282d312c312c2d312c2d312c312c312c312c2d31293b636f6e737420743d222376657273696f6e20333030206573222b682e6e65776c696e652b22707265636973696f6e20686967687020666c6f61743b20696e207665633220703b20766f6964206d61696e28297b20676c5f506f736974696f6e203d7665633428702c312e302c312e30293b207d223b6c657420723d22707265636973696f6e20686967687020666c6f61743b6f757420766563342066726167436f6c6f723b636f6e737420696e742041413d323b756e69666f726d207665633220755f7265736f6c7574696f6e3b756e69666f726d20666c6f617420755f74696d653b756e69666f726d207665633220755f6d6f7573653b636f6e7374207665633320763d76656333282e393039383033393231353638363237292c663d76656333282e38293b636f6e7374207665633320643d7665633328302c302c2d2e32293b76656333207428297b7665633320763d676c5f46726167436f6f72642e7879792c663b763d7665633328646f7428762c76656333283132372e312c3331312e372c37342e3729292c646f7428762c76656333283236392e352c3138332e332c3234362e3129292c646f7428762c76656333283131332e352c3237312e392c3132342e362929293b663d2d312e2b322e2a66726163742873696e2876292a34333735382e35343533313233293b72657475726e206672616374283535352e2a73696e283737372e2a6629292f3235362e3b7d76656333207428766563332076297b762b3d7428293b72657475726e20763b7d666c6f6174207328766563322076297b72657475726e2066726163742873696e28646f7428762e78792c766563322831322e393839382c37382e3233332929292a34333735382e35343533313233293b7d766563332073287665633320762c766563342066297b72657475726e20762b322e2a63726f737328662e78797a2c63726f737328662e78797a2c76292b762a662e77293b7d766563332074287665633320762c666c6f61742066297b72657475726e207328762c766563342873696e28662f322e292c302c302c636f7328662f322e2929293b7d76656333206e287665633320762c666c6f61742066297b72657475726e207328762c7665633428302c73696e28662f322e292c302c636f7328662f322e2929293b7d76656333206d287665633320762c666c6f61742066297b72657475726e207328762c7665633428302c302c73696e28662f322e292c636f7328662f322e2929293b7d666c6f6174206d287665633320762c7665633320662c76656333206d297b7665633320693d762d662c783d6d2d663b72657475726e206c656e67746828692d782a636c616d7028646f7428692c78292f646f7428782c78292c302e2c312e29292d2e343b7d666c6f6174206e287665633320762c7665633320662c76656333206d297b7665633320783d6d2d662c643d762d663b666c6f617420793d646f7428782c78292c733d646f7428642c78292c633d6c656e67746828642a792d782a73292d382e2a792c613d61627328732d792a2e35292d792a2e352c693d632a632c6f3d612a612a792c413d6d617828632c61293c302e3f2d6d696e28692c6f293a28633e302e3f693a302e292b28613e302e3f6f3a302e293b72657475726e207369676e2841292a7371727428616273284129292f793b7d766563322078287665633220762c666c6f61742066297b7665633220693b666c6f617420793d732876292d2e353b692e783d322e2a61636f73282d312e292a793b692e793d312e2b726f756e6428732876292a28662d312e29293b692e792a3d322e2a6d6f6428726f756e6428792a31302e292c322e292d312e3b72657475726e20693b7d766f6964206d28666c6f617420762c7665633220662c6f7574207665633320692c6f7574207665633320642c6f757420666c6f61742072297b7665633220753d755f6d6f7573652e78792f755f7265736f6c7574696f6e2e78792c793b752d3d2e353b762b3d752e782a31302e3b762d3d752e792a352e3b666c6f617420633d662e782b662e792a362e2c6f2c413b793d7665633228632c632a2d2e35293b723d73696e28762b322e2a61636f73282d312e292a732879292d332e3134313539292a2e323b6f3d636f7328762a726f756e6428332e29292a2e323b413d73696e28762a726f756e6428332e29292a2e323b693d76656333286f2c2d2e333730352c41293b643d76656333282d6f2c2e333730352c2d41293b7b7665633220613d7828792c322e293b693d7428692c762a612e792b612e78293b643d7428642c762a612e792b612e78293b7d7b7665633220613d7828792a2e37352c312e293b693d6e28692c762a612e792b612e78293b643d6e28642c762a612e792b612e78293b7d7b7665633220613d7828792a2e35352c312e293b693d6d28692c762a612e792b612e78293b643d6d28642c762a612e792b612e78293b7d692e792b3d723b642e792b3d723b7d766563322073287665633320762c666c6f617420662c766563322078297b666c6f617420693d3165332c792c642c6f2c722c632c413b7665633320732c612c753b6d28662c782c732c612c79293b643d6d28762c732c61293b732b3d31302e2a28732d61293b753d7665633328302c792c30293b6f3d6e28762c752c73293b723d6d617828642c6f293b693d6d696e28692c72293b633d6d6178282d722c64293b693d6d696e28692c63293b413d302e3b696628693d3d7229413d312e3b656c736520696628693d3d6329413d322e3b72657475726e207665633228692c41293b7d76656332206d287665633320762c7665633320662c666c6f617420692c766563322078297b666c6f617420793d302e2c723d2d312e3b666f7228696e7420643d303b643c33323b642b2b297b7665633320633d762b662a793b7665633220613d7328632c692c78293b723d612e793b792b3d612e782a2d312e3b69662861627328612e78293c2e3030317c7c793e31653329627265616b3b7d72657475726e207665633228792c72293b7d666c6f6174206e287665633320762c7665633320662c7665633320692c7665633320792c6f757420666c6f61742078297b7665633320643d792d692c633d762d693b666c6f617420613d646f7428642c64292c733d646f7428642c66292c413d646f7428642c63292c6f3d612d732a732c723d612a646f7428662c63292d412a732c753d612a646f7428632c63292d412a412d2e31362a612c6d3d722a722d6f2a753b6966286d3e3d302e297b666c6f6174206e3d282d722d73717274286d29292f6f2c673d412b6e2a733b696628673e302e2626673c612972657475726e20783d673c612f322e3f302e3a312e2c6e3b76656333207a3d673c3d302e3f633a762d793b723d646f7428662c7a293b753d646f74287a2c7a292d2e31363b6d3d722a722d753b6966286d3e302e2972657475726e20783d673c3d302e3f302e3a312e2c2d722d73717274286d293b7d72657475726e2d312e3b7d766563332074287665633320762c7665633320662c766563332078297b7665633320693d782d662c643d762d663b72657475726e28642d636c616d7028646f7428642c69292f646f7428692c69292c302e2c312e292a69292f2e343b7d766563322073287665633320762c7665633320662c666c6f617420692c7665633220642c6f757420766563332078297b666c6f617420633d3165332c792c6f2c723b7665633320732c413b6d28692c642c732c412c79293b723d6e28762c662c732c412c6f293b696628723e302e29783d7428762b722a662c732c41292c633d723b72657475726e207665633228632c6f293b7d76656333206d28297b72657475726e206d697828662c762c312e293b7d666c6f61742069287665633320762c766563332066297b666c6f617420793d2d2e322f322e322c692c643b792a3d793b693d2d646f7428662c76293b643d312e2d693b72657475726e20792b28312e2d79292a706f7728642c352e293b7d766563332069287665633320762c7665633320662c7665633320692c666c6f617420642c766563322078297b663d7265667261637428662c692c312e2f312e32293b762b3d2d692a2e30312a312e353b7665633220613d6d28762c662c642c78293b72657475726e20612e783c302e3f7665633328312c302c30293a6d28292a657870282d76656333282e3333292a612e78293b7d76656333207428696e6f7574207665633320792c696e6f7574207665633320782c666c6f617420612c666c6f617420632c76656332206f297b7665633320412c722c753b76656332206e3d7328792c782c632c6f2c41292c7a3d6e3b723d792b7a2e782a783b753d6d28293b6966287a2e783c316533297b666c6f617420673d632a322e2c652c6b3b7665633320683d642c743b682b3d7665633328636f732867292c73696e2867292c642e7a292a382e3b743d6e6f726d616c697a6528682d72293b653d6d617828302e2c646f7428412c7429293b6b3d332e2a706f7728312e2d636c616d7028646f7428412c2d78292c302e2c312e292c312e3335293b6b3d6d617828302e2c6b293b6966287a2e793d3d302e297b753d7665633328652b6b293b76656333206c3d6928722c782c412c632c6f293b666c6f617420703d636c616d70286928782c41292c302e2c312e293b752b3d6d6978286c2c662c70293b753d6d697828662c762c752e78293b7d656c7365206966287a2e793d3d312e29753d6d697828662c762c652b6b293b7d72657475726e20753b7d76656333207028666c6f617420762c666c6f61742066297b666c6f617420613d73696e2866293b72657475726e20766563332832312e37382a612a636f732876292c32312e37382a636f732866292c32312e37382a612a73696e287629293b7d6d6174332072287665633320762c766563322066297b7665633320693d6e6f726d616c697a6528766563332830292d76292c643d6e6f726d616c697a652863726f7373287665633328302c666c6f6f72286d6f6428662e792c322e29293d3d302e3f2d312e3a312e2c30292c6929293b72657475726e206d61743328642c6e6f726d616c697a652863726f737328692c6429292c69293b7d766f6964206d61696e28297b666c6f617420763d755f74696d652c662c692c642c783b7665633320793d766563332830292c633b7665633220613d76656332282e35292c413b613d766563322830293b663d28312e2d612e79292a332e31343135393b693d322e2a61636f73282d312e292a612e782b312e3537303739353b633d7028692c66293b633d7665633328302c302c32312e3738293b6d61743320753d7228632c61293b413d676c5f46726167436f6f72642e78793b643d2e352b2e352a73696e28412e782a3134372e292a73696e28412e792a3133312e293b783d2e332a736d6f6f74687374657028302e2c312e2c73696e28322e2a61636f73282d312e292a762f352e29293b762b3d302e3b666f7228696e74206f3d303b6f3c41413b6f2b2b29666f7228696e7420733d303b733c41413b732b2b297b76656332206e3d676c5f46726167436f6f72642e78793b6e3d286e2d2e352a755f7265736f6c7574696f6e2e7879292f6d696e28755f7265736f6c7574696f6e2e782c755f7265736f6c7574696f6e2e79293b696628616273286e2e78293c2e34323636392626616273286e2e79293c2e3432363639297b6e3d286e2b2e3432363639292f2e38353333382a362e3b76656332207a3d666c6f6f722876656332286e29292c653b6e3d6672616374286e292d2e353b653d6e2a2e3131353434313434373631393934323b7665633320673d6e6f726d616c697a6528752a7665633328652c3129293b666c6f617420683d762d2e31352a28666c6f617428732a41412b6f292b64292f666c6f61742841412a4141292c6b2c6c3d6b3d322e2a61636f73282d312e292a682f352e3b6b3d322e2a61636f73282d312e292a28682d78292f352e3b792e782b3d7428632c672c6c2c6b2c7a292e783b6b3d322e2a61636f73282d312e292a682f352e3b792e792b3d7428632c672c6c2c6b2c7a292e793b6b3d322e2a61636f73282d312e292a28682b78292f352e3b792e7a2b3d7428632c672c6c2c6b2c7a292e7a3b7d656c736520792b3d6d28293b7d792f3d666c6f61742841412a4141293b793d742879293b66726167436f6c6f723d7665633428792c31293b7d223b696628723d222376657273696f6e20333030206573222b682e6e65776c696e652b722c6d6f62696c65297b636f6e737420653d22636f6e737420696e742041413d32223b723d722e7265706c61636528652c22636f6e737420696e742041413d3122297d77696e646f772e70726f6772616d3d732e70726f6772616d3d682e696e697450726f6772616d28722c742c65292c682e72656e64657228297d656c73657b636f6e737420653d642e637265617465456c656d656e74282264697622293b652e7374796c652e637373546578743d22616c69676e2d6974656d733a63656e7465723b6261636b67726f756e643a233936393639363b636f6c6f723a236666663b646973706c61793a666c65783b666f6e742d66616d696c793a6d6f6e6f73706163653b666f6e742d73697a653a323070783b6865696768743a31303076683b6a7573746966792d636f6e74656e743a63656e7465723b6c6566743a303b706f736974696f6e3a66697865643b746f703a303b77696474683a31303076773b222c652e696e6e657248544d4c3d22596f75722062726f7773657220646f6573206e6f7420737570706f727420576562474c2e222c622e617070656e642865297d7d3b696e697428293ba26469706673582212204ad5490f3b4a7da0c021ddf055ce2ac30203d30e6e865f61e41d2c1f83dd49be64736f6c634300081900330000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610610126575f3560e01c80638a71bb2d116100a8578063def181011161006d578063def181011461030e578063e52a78741461035e578063ecfc7ecc14610372578063f2fde38b1461037a578063f3f4370314610399578063fa4e28f6146103c4575f80fd5b80638a71bb2d1461027d5780638da5cb5b146102a057806395d89b41146102be5780639c3962f0146102e7578063c7857fb5146102ef575f80fd5b80633ccfd60b116100ee5780633ccfd60b146101eb57806341e42f30146101ff57806342c472171461021e5780634c00de82146102325780636b6c077414610269575f80fd5b806306fdde031461012a5780630dca550e1461016e57806337271cc71461018f57806337a908fc146101a357806338739dad146101b7575b5f80fd5b348015610135575f80fd5b5060408051808201909152600a81526915dbdb99195c9b185b9960b21b60208201525b6040516101659190610d7d565b60405180910390f35b348015610179575f80fd5b5061018d610188366004610dcd565b6103ee565b005b34801561019a575f80fd5b5061018d61049e565b3480156101ae575f80fd5b50610158610545565b3480156101c2575f80fd5b50610158604051806040016040528060098152602001682bb0b5b2903ab8170560b91b81525081565b3480156101f6575f80fd5b5061018d610587565b34801561020a575f80fd5b5061018d610219366004610df7565b6105a6565b348015610229575f80fd5b5061018d61061a565b34801561023d575f80fd5b50600754610251906001600160a01b031681565b6040516001600160a01b039091168152602001610165565b348015610274575f80fd5b506101586106f2565b348015610288575f80fd5b5061029260085481565b604051908152602001610165565b3480156102ab575f80fd5b505f54610251906001600160a01b031681565b3480156102c9575f80fd5b506040805180820190915260018152605760f81b6020820152610158565b61018d610711565b3480156102fa575f80fd5b5061018d610309366004610e17565b61088b565b348015610319575f80fd5b506004546005546006546103389260ff1691906001600160a01b031683565b60408051931515845260208401929092526001600160a01b031690820152606001610165565b348015610369575f80fd5b5061018d610924565b61018d610ab3565b348015610385575f80fd5b5061018d610394366004610df7565b610b87565b3480156103a4575f80fd5b506102926103b3366004610df7565b60096020525f908152604090205481565b3480156103cf575f80fd5b506001546002546003546103389260ff1691906001600160a01b031683565b5f546001600160a01b03163314610418576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018590526001600160a01b038416918301829052805460ff1916811790556002849055600380546001600160a01b03191682179055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906104929086815260200190565b60405180910390a35050565b6006546001600160a01b031633146104c95760405163173f0e6f60e21b815260040160405180910390fd5b60058054604080516060810182525f8082526020820181905291018190526004805460ff19169055909155600680546001600160a01b031916905561050d81610ca3565b60405181815233907f5e9c7ae3229b2cda5065d7058fcc05765c695c29ce05313fbe96cb2ca639231a9060200160405180910390a250565b60606040518061280001604052806127d381526020016110196127d391396040516020016105739190610e2e565b604051602081830303815290604052905090565b335f90815260096020526040812080549190556105a381610ca3565b50565b6007546001600160a01b031633146105d157604051631229bf3760e11b815260040160405180910390fd5b6001600160a01b0381166105f85760405163e99d5ac560e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610644576040516330cd747160e01b815260040160405180910390fd5b60408051606080820183526001805460ff811615158452600280546020808701918252600380546001600160a01b038082168a8c019081528b51998a018c525f808b52948a01859052988b0184905260ff1990961690965592556001600160a01b03199093169055915190519351929391169133917ff1f48fe426adbd884772d4c165015a460df54458ff7e238dff36fe3c5d341ccf916106e791815260200190565b60405180910390a350565b6040518061280001604052806127d381526020016110196127d3913981565b60015460ff1661073457604051631d99ddbf60e01b815260040160405180910390fd5b6003546001600160a01b03161580159061075957506003546001600160a01b03163314155b156107775760405163d6da33db60e01b815260040160405180910390fd5b60025434146107995760405163356680b760e01b815260040160405180910390fd5b604080516060810182525f8082526020820181905291018190526001805460ff191690556002819055600380546001600160a01b03191690556107db34610d0d565b90506107e78134610fbc565b5f80546001600160a01b03168152600960205260408120805490919061080e908490610fcf565b90915550506007546001600160a01b03165f908152600960205260408120805483929061083c908490610fcf565b90915550505f5460405134815233916001600160a01b0316907fdb87be53c711a1eb193f5fffddcfd85425990853a8423fa2bfd4a8620c218ed49060200160405180910390a36105a333610d2e565b5f546001600160a01b031633146108b5576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018490525f918301829052805460ff1916811790556002839055600380546001600160a01b0319169055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906106e79085815260200190565b5f546001600160a01b0316331461094e576040516330cd747160e01b815260040160405180910390fd5b60045460ff16610971576040516313650ef160e11b815260040160405180910390fd5b600580546006805460408051606080820183525f80835260208084018290529284018190526001805460ff199081169091556002829055600380546001600160a01b031990811690915585519384018652828452938301829052919093018390526004805490911690559481905593811690915590916001600160a01b03909116906109fc83610d0d565b9050610a088184610fbc565b5f80546001600160a01b031681526009602052604081208054909190610a2f908490610fcf565b90915550506007546001600160a01b03165f9081526009602052604081208054839290610a5d908490610fcf565b90915550505f546040518481526001600160a01b038481169216907fd32f7ef8c20232133e4dbd098b49d6b86ab580eee8a90a815925e900584749639060200160405180910390a3610aae82610d2e565b505050565b6005543411610ad55760405163356680b760e01b815260040160405180910390fd5b60055415610b0f576005546006546001600160a01b03165f9081526009602052604081208054909190610b09908490610fcf565b90915550505b604080516060810182526001808252346020808401829052339385018490526004805460ff19169093179092556005819055600680546001600160a01b03191684179055925192835290917f5445de3f4fe13efb115ec05c57e09cc0e277801d0cd2ae780457ebcd8688c391910160405180910390a2565b5f546001600160a01b03163314610bb1576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610bd85760405163e99d5ac560e01b815260040160405180910390fd5b610be181610d2e565b6006546001600160a01b03808316911603610c5e5760058054604080516060810182525f80825260208083018290529183018190526004805460ff1916905593849055600680546001600160a01b03191690556001600160a01b0385168452600990528220805491928392610c57908490610fcf565b9091555050505b60015460ff16156105a357604080516060810182525f8082526020820181905291018190526001805460ff19169055600255600380546001600160a01b031916905550565b6040515f90339083908381818185875af1925050503d805f8114610ce2576040519150601f19603f3d011682016040523d82523d5f602084013e610ce7565b606091505b5050905080610d09576040516342bb570960e01b815260040160405180910390fd5b5050565b5f606460085483610d1e9190610fe2565b610d289190610ff9565b92915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fb0594827696749bdc48b310d4a5cfee5e9a89491f1c6bea2b928c2c33db414de9190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610dc8575f80fd5b919050565b5f8060408385031215610dde575f80fd5b82359150610dee60208401610db2565b90509250929050565b5f60208284031215610e07575f80fd5b610e1082610db2565b9392505050565b5f60208284031215610e27575f80fd5b5035919050565b7f3c21444f43545950452068746d6c3e3c68746d6c3e3c686561643e3c7469746c815261329f60f11b60208201526915dbdb99195c9b185b9960b21b60228201527f3c2f7469746c653e3c6d657461206e616d653d2276696577706f72742220636f602c8201527f6e74656e743d2277696474683d6465766963652d77696474682c20696e697469604c8201527f616c2d7363616c653d3122202f3e3c7374796c653e68746d6c2c626f64797b62606c8201527f61636b67726f756e643a233936393639363b6d617267696e3a303b7061646469608c8201527f6e673a303b6f766572666c6f773a68696464656e3b7d3c2f7374796c653e3c2f60ac8201527f686561643e3c626f64793e3c73637269707420747970653d22746578742f6a6160cc820152693b30b9b1b934b83a111f60b11b60ec8201525f8251806020850160f685015e7f3c2f7363726970743e3c2f626f64793e3c2f68746d6c3e000000000000000000920160f68101929092525061010d01919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d2857610d28610fa8565b80820180821115610d2857610d28610fa8565b8082028115828204841417610d2857610d28610fa8565b5f8261101357634e487b7160e01b5f52601260045260245ffd5b50049056fe2275736520737472696374223b6c657420733d7b7369676e61747572653a22646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423361575230614430694d6a45324969426f5a576c6e61485139496a49784e694967646d6c6c64304a76654430694d434177494449784e6941794d54596949475a7062477739496d3576626d5569494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a79492b436a78775958526f49475139496b30784d6a41674f545a494f545a574d544977534445794d4659354e6c6f6949475a7062477739496e646f6158526c4969382b436a78775958526f49475a7062477774636e56735a5430695a585a6c626d396b5a43496759327870634331796457786c50534a6c646d56756232526b4969426b50534a4e4d6a4532494445774f454d794d5459674d5459334c6a59304f4341784e6a63754e6a5134494449784e6941784d4467674d6a4532517a51344c6a4d314d5459674d6a4532494441674d5459334c6a59304f434177494445774f454d77494451344c6a4d314d5459674e4467754d7a55784e694177494445774f434177517a45324e7934324e4467674d4341794d5459674e4467754d7a55784e6941794d5459674d544134576b30794d4441674d544134517a49774d4341784e5467754f444135494445314f4334344d446b674d6a4177494445774f4341794d4442444e5463754d546b784e4341794d4441674d5459674d5455344c6a67774f5341784e6941784d4468444d5459674e5463754d546b784e4341314e7934784f54453049444532494445774f4341784e6b4d784e5467754f44413549444532494449774d4341314e7934784f544530494449774d4341784d4468614969426d6157787350534a3361476c305a53497650676f384c334e325a7a344b222c6d6f7573655f73656e73697469766974793a2e362c6d6f7573655f6c696d69743a302c6672616d653a302c7265733a5b302c305d2c736176655f6672616d65733a307d3b77696e646f772e683d7b6e65776c696e653a537472696e672e66726f6d43686172436f6465283130292c7061727365723a6e65772055524c2877696e646f772e6c6f636174696f6e297d3b636f6e7374206d6f62696c653d2f416e64726f69647c7765624f537c6950686f6e657c695061647c69506f647c426c61636b42657272797c49454d6f62696c657c4f70657261204d696e692f692e74657374286e6176696761746f722e757365724167656e74293b6c657420773d77696e646f772c643d646f63756d656e742c623d642e626f64793b642e626f64792e7374796c652e746f756368416374696f6e3d226e6f6e65222c642e626f64792e7374796c652e7573657253656c6563743d226e6f6e65223b6c657420633d642e637265617465456c656d656e74282263616e76617322293b632e7374796c652e646973706c61793d22626c6f636b222c622e617070656e644368696c642863293b636f6e737420696d6167653d642e637265617465456c656d656e742822696d6722293b696d6167652e7372633d732e7369676e61747572652e7472696d28292c696d6167652e7374796c652e637373546578743d2277696474683a343070783b7a2d696e6465783a35303b706f736974696f6e3a66697865643b626f74746f6d3a323070783b72696768743a323070783b222c622e617070656e644368696c6428696d616765293b636f6e737420435245444954533d224920616d20677261746566756c20746f2044696d612c2057696c6c5374616c6c2c20616e642049512028736466292c2044656d6f666f78202852656672616374696f6e2920666f72206d616b696e67207468697320706965636520706f737369626c652c20796f75206172652077697a617264732e202d2048616e223b636f6e736f6c652e6c6f672843524544495453293b636f6e737420676c4f7074696f6e733d7b706f776572507265666572656e63653a22686967682d706572666f726d616e6365227d3b6d6f62696c65262664656c65746520676c4f7074696f6e732e706f776572507265666572656e63652c772e676c3d632e676574436f6e746578742822776562676c32222c676c4f7074696f6e73292c682e756e69666f726d31693d28652c74293d3e682e756e69666f726d28652c742c22756e69666f726d316922292c682e756e69666f726d3d28652c742c72293d3e7b732e756e69666f726d737c7c3d7b7d3b28732e756e69666f726d735b655d7c7c3d2828293d3e7b636f6e737420693d676c2e676574556e69666f726d4c6f636174696f6e28732e63757272656e745f70726f6772616d2c65292c6f3d727c7c2841727261792e697341727261792874293f22756e69666f726d326676223a22756e69666f726d316622293b72657475726e7b7570646174653a653d3e676c5b6f5d28692c65297d7d292829292e7570646174652874297d2c682e726573697a653d28293d3e7b6c657420652c742c722c693d7b783a682e69782e6d6f7573652e782f732e7265735b305d2c793a682e69782e6d6f7573652e792f732e7265735b315d7d3b636f6e7374206f3d682e7061727365722e736561726368506172616d732e6765742822726573222c74293b6f3f28653d743d6f2c723d31293a28653d772e696e6e657257696474682c743d772e696e6e65724865696768742c732e617370656374262628653e742a732e6173706563743f653d742a732e6173706563743a743d652f732e617370656374292c723d772e646576696365506978656c526174696f292c732e7265735b305d3d632e77696474683d652a722c732e7265735b315d3d632e6865696768743d742a722c632e7374796c652e77696474683d652b227078222c632e7374796c652e6865696768743d742b227078222c682e69782e73657428632e77696474682a692e782c632e6865696768742a692e79297d2c682e69783d7b73746172743a7b783a302c793a307d2c6d6f7573653a7b783a302c793a307d7d2c682e69782e7365743d28652c74293d3e7b682e69782e6d6f7573653d7b783a652c793a747d7d2c682e69782e73746172743d653d3e7b682e69782e73746172742e783d652e636c69656e74582c682e69782e73746172742e793d652e636c69656e74592c642e6164644576656e744c697374656e65722822706f696e7465726d6f7665222c682e69782e6d6f7665297d2c682e636c616d703d28652c742c72293d3e4d6174682e6d617828742c4d6174682e6d696e28722c6529292c682e69782e6d6f76653d653d3e7b682e69782e6d6f7573652e782b3d28652e636c69656e74582d682e69782e73746172742e78292a77696e646f772e646576696365506978656c526174696f2a732e6d6f7573655f73656e73697469766974792c682e69782e6d6f7573652e792d3d28652e636c69656e74592d682e69782e73746172742e79292a77696e646f772e646576696365506978656c526174696f2a732e6d6f7573655f73656e73697469766974792c682e69782e73746172742e783d652e636c69656e74582c682e69782e73746172742e793d652e636c69656e74592c682e69782e6d6f7573652e783d682e636c616d7028682e69782e6d6f7573652e782c732e7265735b305d2a732e6d6f7573655f6c696d69742c732e7265735b305d2a28312d732e6d6f7573655f6c696d697429292c682e69782e6d6f7573652e793d682e636c616d7028682e69782e6d6f7573652e792c732e7265735b315d2a732e6d6f7573655f6c696d69742c732e7265735b315d2a28312d732e6d6f7573655f6c696d697429297d2c682e69782e73746f703d28293d3e7b642e72656d6f76654576656e744c697374656e65722822706f696e7465726d6f7665222c682e69782e6d6f7665297d2c682e736176653d7b7d2c682e736176652e746f496d6167653d28293d3e7b636f6e737420653d6e657720446174653b6c657420743d537472696e6728652e67657446756c6c596561722829292e736c69636528322c34292b222d222b652e6765744d6f6e746828292b222d222b652e6765744461746528292b222028222b732e6672616d652b22292e706e67222c723d646f63756d656e742e637265617465456c656d656e7428226122293b722e7365744174747269627574652822646f776e6c6f6164222c74293b6c657420693d632e746f4461746155524c2822696d6167652f706e6722292e7265706c6163652822646174613a696d6167652f706e67222c22646174613a6170706c69636174696f6e2f6f637465742d73747265616d22293b722e736574417474726962757465282268726566222c69292c722e636c69636b28292c722e72656d6f766528297d2c682e6275696c645368616465723d28652c74293d3e7b6c657420723d676c2e6372656174655368616465722865293b72657475726e20676c2e736861646572536f7572636528722c74292c676c2e636f6d70696c655368616465722872292c727d2c682e696e697450726f6772616d3d28652c742c72293d3e7b636f6e737420693d676c2e63726561746550726f6772616d28292c6f3d682e6275696c6453686164657228676c2e5645525445585f5348414445522c74292c613d682e6275696c6453686164657228676c2e465241474d454e545f5348414445522c65293b676c2e61747461636853686164657228692c6f292c676c2e61747461636853686164657228692c61292c676c2e6c696e6b50726f6772616d2869292c676c2e676574536861646572506172616d65746572286f2c676c2e434f4d50494c455f535441545553297c7c636f6e736f6c652e6572726f722822563a20222b676c2e676574536861646572496e666f4c6f67286f29292c676c2e676574536861646572506172616d6574657228612c676c2e434f4d50494c455f535441545553297c7c636f6e736f6c652e6572726f722822463a20222b676c2e676574536861646572496e666f4c6f67286129292c676c2e67657450726f6772616d506172616d6574657228692c676c2e4c494e4b5f535441545553297c7c636f6e736f6c652e6572726f722822503a20222b676c2e67657450726f6772616d496e666f4c6f67286929293b6c657420733d676c2e63726561746542756666657228292c633d676c2e6765744174747269624c6f636174696f6e28692c227022293b72657475726e20676c2e62696e6442756666657228676c2e41525241595f4255464645522c73292c676c2e6275666665724461746128676c2e41525241595f4255464645522c722c676c2e5354415449435f44524157292c676c2e656e61626c6556657274657841747472696241727261792863292c676c2e766572746578417474726962506f696e74657228632c322c676c2e464c4f41542c21312c302c30292c697d2c732e706978656c3d6e65772055696e743841727261792834292c682e72656e6465723d28293d3e7b676c2e76696577706f727428302c302c632e77696474682c632e686569676874292c676c2e75736550726f6772616d28732e70726f6772616d292c732e63757272656e745f70726f6772616d3d732e70726f6772616d2c732e6672616d653c732e736176655f6672616d65733f682e756e69666f726d2822755f74696d65222c2e30313636372a732e6672616d65293a682e756e69666f726d2822755f74696d65222c2e3030312a706572666f726d616e63652e6e6f772829292c682e756e69666f726d2822755f7265736f6c7574696f6e222c732e726573292c682e756e69666f726d2822755f6d6f757365222c5b682e69782e6d6f7573652e782c682e69782e6d6f7573652e795d292c676c2e6472617741727261797328676c2e545249414e474c455f53545249502c302c34292c676c2e72656164506978656c7328302c302c312c312c676c2e524742412c676c2e554e5349474e45445f425954452c732e706978656c292c28682e736176652e7175657565647c7c732e6672616d653c732e736176655f6672616d65732626732e6672616d653e3329262628682e736176652e7175657565643d21312c682e736176652e746f496d6167652829292c732e6672616d652b2b2c72657175657374416e696d6174696f6e4672616d6528682e72656e646572297d3b636f6e737420696e69743d6173796e6328293d3e7b696628676c297b682e726573697a6528292c682e69782e73657428632e77696474682f322c632e6865696768742f32292c642e6164644576656e744c697374656e65722822706f696e746572646f776e222c682e69782e7374617274292c642e6164644576656e744c697374656e65722822706f696e7465727570222c682e69782e73746f70292c772e6164644576656e744c697374656e65722822726573697a65222c682e726573697a65292c732e736176655f6672616d65733d682e7061727365722e736561726368506172616d732e67657428226672616d657322297c7c302c642e6164644576656e744c697374656e657228226b65797570222c28653d3e7b6966282128652e6374726c4b65797c7c652e616c744b65797c7c652e73686966744b65797c7c652e6d6574614b6579292973776974636828652e6b6579297b636173652266223a636f6e737420653d70726f6d707428224672616d657320746f2072656e646572222c732e736176655f6672616d6573293b682e7061727365722e736561726368506172616d732e73657428226672616d6573222c65292c77696e646f772e6c6f636174696f6e3d682e7061727365722e687265663b627265616b3b636173652272223a636f6e737420743d70726f6d7074282243616e7661732073697a6520696e20706978656c7320286d6178203831393229222c632e686569676874293b743e3d382626743c3d38313932262628682e7061727365722e736561726368506172616d732e7365742822726573222c74292c77696e646f772e6c6f636174696f6e3d682e7061727365722e68726566293b627265616b3b636173652273223a682e736176652e7175657565643d21307d7d29293b6c657420653d466c6f6174333241727261792e6f66282d312c312c2d312c2d312c312c312c312c2d31293b636f6e737420743d222376657273696f6e20333030206573222b682e6e65776c696e652b22707265636973696f6e20686967687020666c6f61743b20696e207665633220703b20766f6964206d61696e28297b20676c5f506f736974696f6e203d7665633428702c312e302c312e30293b207d223b6c657420723d22707265636973696f6e20686967687020666c6f61743b6f757420766563342066726167436f6c6f723b636f6e737420696e742041413d323b756e69666f726d207665633220755f7265736f6c7574696f6e3b756e69666f726d20666c6f617420755f74696d653b756e69666f726d207665633220755f6d6f7573653b636f6e7374207665633320763d76656333282e393039383033393231353638363237292c663d76656333282e38293b636f6e7374207665633320643d7665633328302c302c2d2e32293b76656333207428297b7665633320763d676c5f46726167436f6f72642e7879792c663b763d7665633328646f7428762c76656333283132372e312c3331312e372c37342e3729292c646f7428762c76656333283236392e352c3138332e332c3234362e3129292c646f7428762c76656333283131332e352c3237312e392c3132342e362929293b663d2d312e2b322e2a66726163742873696e2876292a34333735382e35343533313233293b72657475726e206672616374283535352e2a73696e283737372e2a6629292f3235362e3b7d76656333207428766563332076297b762b3d7428293b72657475726e20763b7d666c6f6174207328766563322076297b72657475726e2066726163742873696e28646f7428762e78792c766563322831322e393839382c37382e3233332929292a34333735382e35343533313233293b7d766563332073287665633320762c766563342066297b72657475726e20762b322e2a63726f737328662e78797a2c63726f737328662e78797a2c76292b762a662e77293b7d766563332074287665633320762c666c6f61742066297b72657475726e207328762c766563342873696e28662f322e292c302c302c636f7328662f322e2929293b7d76656333206e287665633320762c666c6f61742066297b72657475726e207328762c7665633428302c73696e28662f322e292c302c636f7328662f322e2929293b7d76656333206d287665633320762c666c6f61742066297b72657475726e207328762c7665633428302c302c73696e28662f322e292c636f7328662f322e2929293b7d666c6f6174206d287665633320762c7665633320662c76656333206d297b7665633320693d762d662c783d6d2d663b72657475726e206c656e67746828692d782a636c616d7028646f7428692c78292f646f7428782c78292c302e2c312e29292d2e343b7d666c6f6174206e287665633320762c7665633320662c76656333206d297b7665633320783d6d2d662c643d762d663b666c6f617420793d646f7428782c78292c733d646f7428642c78292c633d6c656e67746828642a792d782a73292d382e2a792c613d61627328732d792a2e35292d792a2e352c693d632a632c6f3d612a612a792c413d6d617828632c61293c302e3f2d6d696e28692c6f293a28633e302e3f693a302e292b28613e302e3f6f3a302e293b72657475726e207369676e2841292a7371727428616273284129292f793b7d766563322078287665633220762c666c6f61742066297b7665633220693b666c6f617420793d732876292d2e353b692e783d322e2a61636f73282d312e292a793b692e793d312e2b726f756e6428732876292a28662d312e29293b692e792a3d322e2a6d6f6428726f756e6428792a31302e292c322e292d312e3b72657475726e20693b7d766f6964206d28666c6f617420762c7665633220662c6f7574207665633320692c6f7574207665633320642c6f757420666c6f61742072297b7665633220753d755f6d6f7573652e78792f755f7265736f6c7574696f6e2e78792c793b752d3d2e353b762b3d752e782a31302e3b762d3d752e792a352e3b666c6f617420633d662e782b662e792a362e2c6f2c413b793d7665633228632c632a2d2e35293b723d73696e28762b322e2a61636f73282d312e292a732879292d332e3134313539292a2e323b6f3d636f7328762a726f756e6428332e29292a2e323b413d73696e28762a726f756e6428332e29292a2e323b693d76656333286f2c2d2e333730352c41293b643d76656333282d6f2c2e333730352c2d41293b7b7665633220613d7828792c322e293b693d7428692c762a612e792b612e78293b643d7428642c762a612e792b612e78293b7d7b7665633220613d7828792a2e37352c312e293b693d6e28692c762a612e792b612e78293b643d6e28642c762a612e792b612e78293b7d7b7665633220613d7828792a2e35352c312e293b693d6d28692c762a612e792b612e78293b643d6d28642c762a612e792b612e78293b7d692e792b3d723b642e792b3d723b7d766563322073287665633320762c666c6f617420662c766563322078297b666c6f617420693d3165332c792c642c6f2c722c632c413b7665633320732c612c753b6d28662c782c732c612c79293b643d6d28762c732c61293b732b3d31302e2a28732d61293b753d7665633328302c792c30293b6f3d6e28762c752c73293b723d6d617828642c6f293b693d6d696e28692c72293b633d6d6178282d722c64293b693d6d696e28692c63293b413d302e3b696628693d3d7229413d312e3b656c736520696628693d3d6329413d322e3b72657475726e207665633228692c41293b7d76656332206d287665633320762c7665633320662c666c6f617420692c766563322078297b666c6f617420793d302e2c723d2d312e3b666f7228696e7420643d303b643c33323b642b2b297b7665633320633d762b662a793b7665633220613d7328632c692c78293b723d612e793b792b3d612e782a2d312e3b69662861627328612e78293c2e3030317c7c793e31653329627265616b3b7d72657475726e207665633228792c72293b7d666c6f6174206e287665633320762c7665633320662c7665633320692c7665633320792c6f757420666c6f61742078297b7665633320643d792d692c633d762d693b666c6f617420613d646f7428642c64292c733d646f7428642c66292c413d646f7428642c63292c6f3d612d732a732c723d612a646f7428662c63292d412a732c753d612a646f7428632c63292d412a412d2e31362a612c6d3d722a722d6f2a753b6966286d3e3d302e297b666c6f6174206e3d282d722d73717274286d29292f6f2c673d412b6e2a733b696628673e302e2626673c612972657475726e20783d673c612f322e3f302e3a312e2c6e3b76656333207a3d673c3d302e3f633a762d793b723d646f7428662c7a293b753d646f74287a2c7a292d2e31363b6d3d722a722d753b6966286d3e302e2972657475726e20783d673c3d302e3f302e3a312e2c2d722d73717274286d293b7d72657475726e2d312e3b7d766563332074287665633320762c7665633320662c766563332078297b7665633320693d782d662c643d762d663b72657475726e28642d636c616d7028646f7428642c69292f646f7428692c69292c302e2c312e292a69292f2e343b7d766563322073287665633320762c7665633320662c666c6f617420692c7665633220642c6f757420766563332078297b666c6f617420633d3165332c792c6f2c723b7665633320732c413b6d28692c642c732c412c79293b723d6e28762c662c732c412c6f293b696628723e302e29783d7428762b722a662c732c41292c633d723b72657475726e207665633228632c6f293b7d76656333206d28297b72657475726e206d697828662c762c312e293b7d666c6f61742069287665633320762c766563332066297b666c6f617420793d2d2e322f322e322c692c643b792a3d793b693d2d646f7428662c76293b643d312e2d693b72657475726e20792b28312e2d79292a706f7728642c352e293b7d766563332069287665633320762c7665633320662c7665633320692c666c6f617420642c766563322078297b663d7265667261637428662c692c312e2f312e32293b762b3d2d692a2e30312a312e353b7665633220613d6d28762c662c642c78293b72657475726e20612e783c302e3f7665633328312c302c30293a6d28292a657870282d76656333282e3333292a612e78293b7d76656333207428696e6f7574207665633320792c696e6f7574207665633320782c666c6f617420612c666c6f617420632c76656332206f297b7665633320412c722c753b76656332206e3d7328792c782c632c6f2c41292c7a3d6e3b723d792b7a2e782a783b753d6d28293b6966287a2e783c316533297b666c6f617420673d632a322e2c652c6b3b7665633320683d642c743b682b3d7665633328636f732867292c73696e2867292c642e7a292a382e3b743d6e6f726d616c697a6528682d72293b653d6d617828302e2c646f7428412c7429293b6b3d332e2a706f7728312e2d636c616d7028646f7428412c2d78292c302e2c312e292c312e3335293b6b3d6d617828302e2c6b293b6966287a2e793d3d302e297b753d7665633328652b6b293b76656333206c3d6928722c782c412c632c6f293b666c6f617420703d636c616d70286928782c41292c302e2c312e293b752b3d6d6978286c2c662c70293b753d6d697828662c762c752e78293b7d656c7365206966287a2e793d3d312e29753d6d697828662c762c652b6b293b7d72657475726e20753b7d76656333207028666c6f617420762c666c6f61742066297b666c6f617420613d73696e2866293b72657475726e20766563332832312e37382a612a636f732876292c32312e37382a636f732866292c32312e37382a612a73696e287629293b7d6d6174332072287665633320762c766563322066297b7665633320693d6e6f726d616c697a6528766563332830292d76292c643d6e6f726d616c697a652863726f7373287665633328302c666c6f6f72286d6f6428662e792c322e29293d3d302e3f2d312e3a312e2c30292c6929293b72657475726e206d61743328642c6e6f726d616c697a652863726f737328692c6429292c69293b7d766f6964206d61696e28297b666c6f617420763d755f74696d652c662c692c642c783b7665633320793d766563332830292c633b7665633220613d76656332282e35292c413b613d766563322830293b663d28312e2d612e79292a332e31343135393b693d322e2a61636f73282d312e292a612e782b312e3537303739353b633d7028692c66293b633d7665633328302c302c32312e3738293b6d61743320753d7228632c61293b413d676c5f46726167436f6f72642e78793b643d2e352b2e352a73696e28412e782a3134372e292a73696e28412e792a3133312e293b783d2e332a736d6f6f74687374657028302e2c312e2c73696e28322e2a61636f73282d312e292a762f352e29293b762b3d302e3b666f7228696e74206f3d303b6f3c41413b6f2b2b29666f7228696e7420733d303b733c41413b732b2b297b76656332206e3d676c5f46726167436f6f72642e78793b6e3d286e2d2e352a755f7265736f6c7574696f6e2e7879292f6d696e28755f7265736f6c7574696f6e2e782c755f7265736f6c7574696f6e2e79293b696628616273286e2e78293c2e34323636392626616273286e2e79293c2e3432363639297b6e3d286e2b2e3432363639292f2e38353333382a362e3b76656332207a3d666c6f6f722876656332286e29292c653b6e3d6672616374286e292d2e353b653d6e2a2e3131353434313434373631393934323b7665633320673d6e6f726d616c697a6528752a7665633328652c3129293b666c6f617420683d762d2e31352a28666c6f617428732a41412b6f292b64292f666c6f61742841412a4141292c6b2c6c3d6b3d322e2a61636f73282d312e292a682f352e3b6b3d322e2a61636f73282d312e292a28682d78292f352e3b792e782b3d7428632c672c6c2c6b2c7a292e783b6b3d322e2a61636f73282d312e292a682f352e3b792e792b3d7428632c672c6c2c6b2c7a292e793b6b3d322e2a61636f73282d312e292a28682b78292f352e3b792e7a2b3d7428632c672c6c2c6b2c7a292e7a3b7d656c736520792b3d6d28293b7d792f3d666c6f61742841412a4141293b793d742879293b66726167436f6c6f723d7665633428792c31293b7d223b696628723d222376657273696f6e20333030206573222b682e6e65776c696e652b722c6d6f62696c65297b636f6e737420653d22636f6e737420696e742041413d32223b723d722e7265706c61636528652c22636f6e737420696e742041413d3122297d77696e646f772e70726f6772616d3d732e70726f6772616d3d682e696e697450726f6772616d28722c742c65292c682e72656e64657228297d656c73657b636f6e737420653d642e637265617465456c656d656e74282264697622293b652e7374796c652e637373546578743d22616c69676e2d6974656d733a63656e7465723b6261636b67726f756e643a233936393639363b636f6c6f723a236666663b646973706c61793a666c65783b666f6e742d66616d696c793a6d6f6e6f73706163653b666f6e742d73697a653a323070783b6865696768743a31303076683b6a7573746966792d636f6e74656e743a63656e7465723b6c6566743a303b706f736974696f6e3a66697865643b746f703a303b77696474683a31303076773b222c652e696e6e657248544d4c3d22596f75722062726f7773657220646f6573206e6f7420737570706f727420576562474c2e222c622e617070656e642865297d7d3b696e697428293ba26469706673582212204ad5490f3b4a7da0c021ddf055ce2ac30203d30e6e865f61e41d2c1f83dd49be64736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _royaltyPercentage (uint256): 0
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $3,117.73 | 0.045 | $140.3 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.