Overview
ETH Balance
0.35249375 ETH
Eth Value
$833.64 (@ $2,364.97/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,189 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Revoke Unicorn | 6168121 | 2218 days ago | IN | 0 ETH | 0.00005011 | ||||
Revoke Unicorn | 6167953 | 2218 days ago | IN | 0 ETH | 0.00005011 | ||||
Make Hybridizati... | 6167951 | 2218 days ago | IN | 0 ETH | 0.00005035 | ||||
Make Hybridizati... | 6155285 | 2220 days ago | IN | 0 ETH | 0.00005035 | ||||
Sell Unicorn | 6153558 | 2220 days ago | IN | 0 ETH | 0.00005071 | ||||
Make Hybridizati... | 6146888 | 2221 days ago | IN | 0 ETH | 0.0007055 | ||||
Make Hybridizati... | 6146853 | 2221 days ago | IN | 0 ETH | 0.00070575 | ||||
Buy Unicorn With... | 6146773 | 2221 days ago | IN | 0.0155625 ETH | 0.00079027 | ||||
Buy Unicorn With... | 6146748 | 2221 days ago | IN | 0.0155625 ETH | 0.00060129 | ||||
Trade | 6145422 | 2222 days ago | IN | 0 ETH | 0.00036456 | ||||
Sell Unicorn | 6141684 | 2222 days ago | IN | 0 ETH | 0.00058064 | ||||
Accept Hybridiza... | 6141185 | 2222 days ago | IN | 0.003 ETH | 0.00312994 | ||||
Sell Unicorn | 6140735 | 2222 days ago | IN | 0 ETH | 0.00043528 | ||||
Cancel Hybridiza... | 6140719 | 2222 days ago | IN | 0 ETH | 0.00010802 | ||||
Make Hybridizati... | 6140719 | 2222 days ago | IN | 0 ETH | 0.00094206 | ||||
Accept Hybridiza... | 6139102 | 2223 days ago | IN | 0.003 ETH | 0.0020304 | ||||
Accept Hybridiza... | 6139076 | 2223 days ago | IN | 0.003 ETH | 0.00171163 | ||||
Make Hybridizati... | 6139067 | 2223 days ago | IN | 0 ETH | 0.0011987 | ||||
Sell Unicorn | 6138994 | 2223 days ago | IN | 0 ETH | 0.00063898 | ||||
Sell Unicorn | 6138985 | 2223 days ago | IN | 0 ETH | 0.00062391 | ||||
Trade | 6137138 | 2223 days ago | IN | 0 ETH | 0.00034065 | ||||
Make Hybridizati... | 6135934 | 2223 days ago | IN | 0 ETH | 0.00135028 | ||||
Make Hybridizati... | 6135892 | 2223 days ago | IN | 0 ETH | 0.00094221 | ||||
Create Unicorn F... | 6135588 | 2223 days ago | IN | 0.003 ETH | 0.00076806 | ||||
Create Unicorn F... | 6135489 | 2223 days ago | IN | 0.003 ETH | 0.00089017 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6146773 | 2221 days ago | 0.015 ETH | ||||
6146748 | 2221 days ago | 0.015 ETH | ||||
6141185 | 2222 days ago | 0.003 ETH | ||||
6139102 | 2223 days ago | 0.003 ETH | ||||
6135588 | 2223 days ago | 0.003 ETH | ||||
6135489 | 2223 days ago | 0.003 ETH | ||||
6135370 | 2223 days ago | 0.003 ETH | ||||
6135286 | 2223 days ago | 0.003 ETH | ||||
6131789 | 2224 days ago | 0.003 ETH | ||||
6128559 | 2225 days ago | 0.003 ETH | ||||
6128548 | 2225 days ago | 0.003 ETH | ||||
6128486 | 2225 days ago | 0.008 ETH | ||||
6118414 | 2226 days ago | 0.003 ETH | ||||
6118189 | 2226 days ago | 0.003 ETH | ||||
6101164 | 2229 days ago | 0.003 ETH | ||||
6082128 | 2232 days ago | 0.003 ETH | ||||
6070917 | 2234 days ago | 0.005 ETH | ||||
6069270 | 2235 days ago | 0.003 ETH | ||||
6065857 | 2235 days ago | 0.003 ETH | ||||
6065850 | 2235 days ago | 0.003 ETH | ||||
6058673 | 2236 days ago | 0.003 ETH | ||||
6058633 | 2236 days ago | 0.003 ETH | ||||
6053772 | 2237 days ago | 0.003 ETH | ||||
6053708 | 2237 days ago | 0.003 ETH | ||||
6053124 | 2237 days ago | 0.003 ETH |
Loading...
Loading
Contract Name:
UnicornContract
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-06-04 */ pragma solidity 0.4.21; library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract UnicornManagementInterface { function ownerAddress() external view returns (address); function managerAddress() external view returns (address); function communityAddress() external view returns (address); function dividendManagerAddress() external view returns (address); function walletAddress() external view returns (address); function blackBoxAddress() external view returns (address); function unicornBreedingAddress() external view returns (address); function geneLabAddress() external view returns (address); function unicornTokenAddress() external view returns (address); function candyToken() external view returns (address); function candyPowerToken() external view returns (address); function createDividendPercent() external view returns (uint); function sellDividendPercent() external view returns (uint); function subFreezingPrice() external view returns (uint); function subFreezingTime() external view returns (uint64); function subTourFreezingPrice() external view returns (uint); function subTourFreezingTime() external view returns (uint64); function createUnicornPrice() external view returns (uint); function createUnicornPriceInCandy() external view returns (uint); function oraclizeFee() external view returns (uint); function paused() external view returns (bool); function locked() external view returns (bool); function isTournament(address _tournamentAddress) external view returns (bool); function getCreateUnicornFullPrice() external view returns (uint); function getHybridizationFullPrice(uint _price) external view returns (uint); function getSellUnicornFullPrice(uint _price) external view returns (uint); function getCreateUnicornFullPriceInCandy() external view returns (uint); //service function registerInit(address _contract) external; } contract UnicornAccessControl { UnicornManagementInterface public unicornManagement; function UnicornAccessControl(address _unicornManagementAddress) public { unicornManagement = UnicornManagementInterface(_unicornManagementAddress); unicornManagement.registerInit(this); } modifier onlyOwner() { require(msg.sender == unicornManagement.ownerAddress()); _; } modifier onlyManager() { require(msg.sender == unicornManagement.managerAddress()); _; } modifier onlyCommunity() { require(msg.sender == unicornManagement.communityAddress()); _; } modifier onlyTournament() { require(unicornManagement.isTournament(msg.sender)); _; } modifier whenNotPaused() { require(!unicornManagement.paused()); _; } modifier whenPaused { require(unicornManagement.paused()); _; } // modifier whenUnlocked() { // require(!unicornManagement.locked()); // _; // } modifier onlyManagement() { require(msg.sender == address(unicornManagement)); _; } modifier onlyBreeding() { require(msg.sender == unicornManagement.unicornBreedingAddress()); _; } modifier onlyUnicornContract() { require(msg.sender == unicornManagement.unicornBreedingAddress() || unicornManagement.isTournament(msg.sender)); _; } modifier onlyGeneLab() { require(msg.sender == unicornManagement.geneLabAddress()); _; } modifier onlyBlackBox() { require(msg.sender == unicornManagement.blackBoxAddress()); _; } modifier onlyUnicornToken() { require(msg.sender == unicornManagement.unicornTokenAddress()); _; } function isGamePaused() external view returns (bool) { return unicornManagement.paused(); } } contract DividendManagerInterface { function payDividend() external payable; } contract UnicornTokenInterface { //ERC721 function balanceOf(address _owner) public view returns (uint256 _balance); function ownerOf(uint256 _unicornId) public view returns (address _owner); function transfer(address _to, uint256 _unicornId) public; function approve(address _to, uint256 _unicornId) public; function takeOwnership(uint256 _unicornId) public; function totalSupply() public constant returns (uint); function owns(address _claimant, uint256 _unicornId) public view returns (bool); function allowance(address _claimant, uint256 _unicornId) public view returns (bool); function transferFrom(address _from, address _to, uint256 _unicornId) public; function createUnicorn(address _owner) external returns (uint); // function burnUnicorn(uint256 _unicornId) external; function getGen(uint _unicornId) external view returns (bytes); function setGene(uint _unicornId, bytes _gene) external; function updateGene(uint _unicornId, bytes _gene) external; function getUnicornGenByte(uint _unicornId, uint _byteNo) external view returns (uint8); function setName(uint256 _unicornId, string _name ) external returns (bool); function plusFreezingTime(uint _unicornId) external; function plusTourFreezingTime(uint _unicornId) external; function minusFreezingTime(uint _unicornId, uint64 _time) external; function minusTourFreezingTime(uint _unicornId, uint64 _time) external; function isUnfreezed(uint _unicornId) external view returns (bool); function isTourUnfreezed(uint _unicornId) external view returns (bool); function marketTransfer(address _from, address _to, uint256 _unicornId) external; } interface UnicornBalancesInterface { // function tokenPlus(address _token, address _user, uint _value) external returns (bool); // function tokenMinus(address _token, address _user, uint _value) external returns (bool); function trustedTokens(address _token) external view returns (bool); // function balanceOf(address token, address user) external view returns (uint); function transfer(address _token, address _from, address _to, uint _value) external returns (bool); function transferWithFee(address _token, address _userFrom, uint _fullPrice, address _feeTaker, address _priceTaker, uint _price) external returns (bool); } contract ERC20 { // uint256 public totalSupply; function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); } contract TrustedTokenInterface is ERC20 { function transferFromSystem(address _from, address _to, uint256 _value) public returns (bool); function burn(address _from, uint256 _value) public returns (bool); function mint(address _to, uint256 _amount) public returns (bool); } // contract UnicornBreedingInterface { // function deleteOffer(uint _unicornId) external; // function deleteHybridization(uint _unicornId) external; // } contract BlackBoxInterface { function createGen0(uint _unicornId) public payable; function geneCore(uint _childUnicornId, uint _parent1UnicornId, uint _parent2UnicornId) public payable; } interface BreedingDataBaseInterface { function gen0Limit() external view returns (uint); function gen0Count() external view returns (uint); function gen0Step() external view returns (uint); function gen0PresaleLimit() external view returns (uint); function gen0PresaleCount() external view returns (uint); function incGen0Count() external; function incGen0PresaleCount() external; function incGen0Limit() external; function createHybridization(uint _unicornId, uint _price) external; function hybridizationExists(uint _unicornId) external view returns (bool); function hybridizationPrice(uint _unicornId) external view returns (uint); function deleteHybridization(uint _unicornId) external returns (bool); function freezeIndex(uint _unicornId) external view returns (uint); function freezeHybridizationsCount(uint _unicornId) external view returns (uint); function freezeStatsSumHours(uint _unicornId) external view returns (uint); function freezeEndTime(uint _unicornId) external view returns (uint); function freezeMustCalculate(uint _unicornId) external view returns (bool); function freezeExists(uint _unicornId) external view returns (bool); function createFreeze(uint _unicornId, uint _index) external; function incFreezeHybridizationsCount(uint _unicornId) external; function setFreezeHybridizationsCount(uint _unicornId, uint _count) external; function incFreezeIndex(uint _unicornId) external; function setFreezeEndTime(uint _unicornId, uint _time) external; function minusFreezeEndTime(uint _unicornId, uint _time) external; function setFreezeMustCalculate(uint _unicornId, bool _mustCalculate) external; function setStatsSumHours(uint _unicornId, uint _statsSumHours) external; function offerExists(uint _unicornId) external view returns (bool); function offerPriceEth(uint _unicornId) external view returns (uint); function offerPriceCandy(uint _unicornId) external view returns (uint); function createOffer(uint _unicornId, uint _priceEth, uint _priceCandy) external; function deleteOffer(uint _unicornId) external; } contract UnicornBreeding is UnicornAccessControl { using SafeMath for uint; BlackBoxInterface public blackBox; TrustedTokenInterface public megaCandyToken; BreedingDataBaseInterface public breedingDB; UnicornTokenInterface public unicornToken; //only on deploy UnicornBalancesInterface public balances; address public candyTokenAddress; event HybridizationAdd(uint indexed unicornId, uint price); event HybridizationAccept(uint indexed firstUnicornId, uint indexed secondUnicornId, uint newUnicornId, uint price); event SelfHybridization(uint indexed firstUnicornId, uint indexed secondUnicornId, uint newUnicornId, uint price); event HybridizationDelete(uint indexed unicornId); event CreateUnicorn(address indexed owner, uint indexed unicornId, uint parent1, uint parent2); event NewGen0Limit(uint limit); event NewGen0Step(uint step); event FreeHybridization(uint256 indexed unicornId); event NewSelfHybridizationPrice(uint percentCandy); event UnicornFreezingTimeSet(uint indexed unicornId, uint time); event MinusFreezingTime(uint indexed unicornId, uint count); uint public selfHybridizationPrice = 0; uint32[8] internal freezing = [ uint32(1 hours), //1 hour uint32(2 hours), //2 - 4 hours uint32(8 hours), //8 - 12 hours uint32(16 hours), //16 - 24 hours uint32(36 hours), //36 - 48 hours uint32(72 hours), //72 - 96 hours uint32(120 hours), //120 - 144 hours uint32(168 hours) //168 hours ]; //count for random plus from 0 to .. uint32[8] internal freezingPlusCount = [ 0, 3, 5, 9, 13, 25, 25, 0 ]; function makeHybridization(uint _unicornId, uint _price) whenNotPaused public { require(unicornToken.owns(msg.sender, _unicornId)); require(isUnfreezed(_unicornId)); require(!breedingDB.hybridizationExists(_unicornId)); require(unicornToken.getUnicornGenByte(_unicornId, 10) > 0); checkFreeze(_unicornId); breedingDB.createHybridization(_unicornId, _price); emit HybridizationAdd(_unicornId, _price); //свободная касса) if (_price == 0) { emit FreeHybridization(_unicornId); } } function acceptHybridization(uint _firstUnicornId, uint _secondUnicornId) whenNotPaused public payable { require(unicornToken.owns(msg.sender, _secondUnicornId)); require(_secondUnicornId != _firstUnicornId); require(isUnfreezed(_firstUnicornId) && isUnfreezed(_secondUnicornId)); require(breedingDB.hybridizationExists(_firstUnicornId)); require(unicornToken.getUnicornGenByte(_firstUnicornId, 10) > 0 && unicornToken.getUnicornGenByte(_secondUnicornId, 10) > 0); require(msg.value == unicornManagement.oraclizeFee()); uint price = breedingDB.hybridizationPrice(_firstUnicornId); if (price > 0) { uint fullPrice = unicornManagement.getHybridizationFullPrice(price); require(balances.transferWithFee(candyTokenAddress, msg.sender, fullPrice, balances, unicornToken.ownerOf(_firstUnicornId), price)); } plusFreezingTime(_firstUnicornId); plusFreezingTime(_secondUnicornId); uint256 newUnicornId = unicornToken.createUnicorn(msg.sender); blackBox.geneCore.value(unicornManagement.oraclizeFee())(newUnicornId, _firstUnicornId, _secondUnicornId); emit HybridizationAccept(_firstUnicornId, _secondUnicornId, newUnicornId, price); emit CreateUnicorn(msg.sender, newUnicornId, _firstUnicornId, _secondUnicornId); _deleteHybridization(_firstUnicornId); } function selfHybridization(uint _firstUnicornId, uint _secondUnicornId) whenNotPaused public payable { require(unicornToken.owns(msg.sender, _firstUnicornId) && unicornToken.owns(msg.sender, _secondUnicornId)); require(_secondUnicornId != _firstUnicornId); require(isUnfreezed(_firstUnicornId) && isUnfreezed(_secondUnicornId)); require(unicornToken.getUnicornGenByte(_firstUnicornId, 10) > 0 && unicornToken.getUnicornGenByte(_secondUnicornId, 10) > 0); require(msg.value == unicornManagement.oraclizeFee()); if (selfHybridizationPrice > 0) { // require(balances.balanceOf(candyTokenAddress,msg.sender) >= selfHybridizationPrice); require(balances.transfer(candyTokenAddress, msg.sender, balances, selfHybridizationPrice)); } plusFreezingTime(_firstUnicornId); plusFreezingTime(_secondUnicornId); uint256 newUnicornId = unicornToken.createUnicorn(msg.sender); blackBox.geneCore.value(unicornManagement.oraclizeFee())(newUnicornId, _firstUnicornId, _secondUnicornId); emit SelfHybridization(_firstUnicornId, _secondUnicornId, newUnicornId, selfHybridizationPrice); emit CreateUnicorn(msg.sender, newUnicornId, _firstUnicornId, _secondUnicornId); } function cancelHybridization (uint _unicornId) whenNotPaused public { require(unicornToken.owns(msg.sender,_unicornId)); //require(breedingDB.hybridizationExists(_unicornId)); _deleteHybridization(_unicornId); } function deleteHybridization(uint _unicornId) onlyUnicornToken external { _deleteHybridization(_unicornId); } function _deleteHybridization(uint _unicornId) internal { if (breedingDB.deleteHybridization(_unicornId)) { emit HybridizationDelete(_unicornId); } } //Create new 0 gen function createUnicorn() public payable whenNotPaused returns(uint256) { require(msg.value == getCreateUnicornPrice()); return _createUnicorn(msg.sender); } function createUnicornForCandy() public payable whenNotPaused returns(uint256) { require(msg.value == unicornManagement.oraclizeFee()); uint price = getCreateUnicornPriceInCandy(); // require(balances.balanceOf(candyTokenAddress,msg.sender) >= price); require(balances.transfer(candyTokenAddress, msg.sender, balances, price)); return _createUnicorn(msg.sender); } function createPresaleUnicorns(uint _count, address _owner) public payable onlyManager whenPaused returns(bool) { require(breedingDB.gen0PresaleCount().add(_count) <= breedingDB.gen0PresaleLimit()); uint256 newUnicornId; address owner = _owner == address(0) ? msg.sender : _owner; for (uint i = 0; i < _count; i++){ newUnicornId = unicornToken.createUnicorn(owner); blackBox.createGen0(newUnicornId); emit CreateUnicorn(owner, newUnicornId, 0, 0); breedingDB.incGen0Count(); breedingDB.incGen0PresaleCount(); } return true; } function _createUnicorn(address _owner) private returns(uint256) { require(breedingDB.gen0Count() < breedingDB.gen0Limit()); uint256 newUnicornId = unicornToken.createUnicorn(_owner); blackBox.createGen0.value(unicornManagement.oraclizeFee())(newUnicornId); emit CreateUnicorn(_owner, newUnicornId, 0, 0); breedingDB.incGen0Count(); return newUnicornId; } function plusFreezingTime(uint _unicornId) private { checkFreeze(_unicornId); //если меньше 3 спарок увеличиваю просто спарки, если 3 тогда увеличиваю индекс if (breedingDB.freezeHybridizationsCount(_unicornId) < 3) { breedingDB.incFreezeHybridizationsCount(_unicornId); } else { if (breedingDB.freezeIndex(_unicornId) < freezing.length - 1) { breedingDB.incFreezeIndex(_unicornId); breedingDB.setFreezeHybridizationsCount(_unicornId,0); } } uint _time = _getFreezeTime(breedingDB.freezeIndex(_unicornId)) + now; breedingDB.setFreezeEndTime(_unicornId, _time); emit UnicornFreezingTimeSet(_unicornId, _time); } function checkFreeze(uint _unicornId) internal { if (!breedingDB.freezeExists(_unicornId)) { breedingDB.createFreeze(_unicornId, unicornToken.getUnicornGenByte(_unicornId, 163)); } if (breedingDB.freezeMustCalculate(_unicornId)) { breedingDB.setFreezeMustCalculate(_unicornId, false); breedingDB.setStatsSumHours(_unicornId, _getStatsSumHours(_unicornId)); } } function _getRarity(uint8 _b) internal pure returns (uint8) { // [1; 188] common // [189; 223] uncommon // [224; 243] rare // [244; 253] epic // [254; 255] legendary return _b < 1 ? 0 : _b < 189 ? 1 : _b < 224 ? 2 : _b < 244 ? 3 : _b < 254 ? 4 : 5; } function _getStatsSumHours(uint _unicornId) internal view returns (uint) { uint8[5] memory physStatBytes = [ //physical 112, //strength 117, //agility 122, //speed 127, //intellect 132 //charisma ]; uint8[10] memory rarity1Bytes = [ //rarity old 13, //body-form 18, //wings-form 23, //hoofs-form 28, //horn-form 33, //eyes-form 38, //hair-form 43, //tail-form 48, //stone-form 53, //ears-form 58 //head-form ]; uint8[10] memory rarity2Bytes = [ //rarity new 87, //body-form 92, //wings-form 97, //hoofs-form 102, //horn-form 107, //eyes-form 137, //hair-form 142, //tail-form 147, //stone-form 152, //ears-form 157 //head-form ]; uint sum = 0; uint i; for(i = 0; i < 5; i++) { sum += unicornToken.getUnicornGenByte(_unicornId, physStatBytes[i]); } for(i = 0; i < 10; i++) { //get v.2 rarity uint rarity = unicornToken.getUnicornGenByte(_unicornId, rarity2Bytes[i]); if (rarity == 0) { //get v.1 rarity rarity = _getRarity(unicornToken.getUnicornGenByte(_unicornId, rarity1Bytes[i])); } sum += rarity; } return sum * 1 hours; } function isUnfreezed(uint _unicornId) public view returns (bool) { return unicornToken.isUnfreezed(_unicornId) && breedingDB.freezeEndTime(_unicornId) <= now; } function enableFreezePriceRateRecalc(uint _unicornId) onlyGeneLab external { breedingDB.setFreezeMustCalculate(_unicornId, true); } /* (сумма генов + количество часов заморозки)/количество часов заморозки = стоимость снятия 1го часа заморозки в MegaCandy */ function getUnfreezingPrice(uint _unicornId) public view returns (uint) { uint32 freezeHours = freezing[breedingDB.freezeIndex(_unicornId)]; return unicornManagement.subFreezingPrice() .mul(breedingDB.freezeStatsSumHours(_unicornId).add(freezeHours)) .div(freezeHours); } function _getFreezeTime(uint freezingIndex) internal view returns (uint time) { time = freezing[freezingIndex]; if (freezingPlusCount[freezingIndex] != 0) { time += (uint(block.blockhash(block.number - 1)) % freezingPlusCount[freezingIndex]) * 1 hours; } } //change freezing time for megacandy function minusFreezingTime(uint _unicornId, uint _count) public { uint price = getUnfreezingPrice(_unicornId); require(megaCandyToken.burn(msg.sender, price.mul(_count))); //не минусуем на уже размороженных конях require(breedingDB.freezeEndTime(_unicornId) > now); //не используем safeMath, т.к. subFreezingTime в теории не должен быть больше now %) breedingDB.minusFreezeEndTime(_unicornId, uint(unicornManagement.subFreezingTime()).mul(_count)); emit MinusFreezingTime(_unicornId,_count); } function getHybridizationPrice(uint _unicornId) public view returns (uint) { return unicornManagement.getHybridizationFullPrice(breedingDB.hybridizationPrice(_unicornId)); } function getEtherFeeForPriceInCandy() public view returns (uint) { return unicornManagement.oraclizeFee(); } function getCreateUnicornPriceInCandy() public view returns (uint) { return unicornManagement.getCreateUnicornFullPriceInCandy(); } function getCreateUnicornPrice() public view returns (uint) { return unicornManagement.getCreateUnicornFullPrice(); } function setGen0Limit() external onlyCommunity { require(breedingDB.gen0Count() == breedingDB.gen0Limit()); breedingDB.incGen0Limit(); emit NewGen0Limit(breedingDB.gen0Limit()); } function setSelfHybridizationPrice(uint _percentCandy) public onlyManager { selfHybridizationPrice = _percentCandy; emit NewSelfHybridizationPrice(_percentCandy); } } contract UnicornMarket is UnicornBreeding { uint public sellDividendPercentCandy = 375; //OnlyManager 4 digits. 10.5% = 1050 uint public sellDividendPercentEth = 375; //OnlyManager 4 digits. 10.5% = 1050 event NewSellDividendPercent(uint percentCandy, uint percentCandyEth); event OfferAdd(uint256 indexed unicornId, uint priceEth, uint priceCandy); event OfferDelete(uint256 indexed unicornId); event UnicornSold(uint256 indexed unicornId, uint priceEth, uint priceCandy); event FreeOffer(uint256 indexed unicornId); function sellUnicorn(uint _unicornId, uint _priceEth, uint _priceCandy) whenNotPaused public { require(unicornToken.owns(msg.sender, _unicornId)); require(!breedingDB.offerExists(_unicornId)); breedingDB.createOffer(_unicornId, _priceEth, _priceCandy); emit OfferAdd(_unicornId, _priceEth, _priceCandy); //налетай) if (_priceEth == 0 && _priceCandy == 0) { emit FreeOffer(_unicornId); } } function buyUnicornWithEth(uint _unicornId) whenNotPaused public payable { require(breedingDB.offerExists(_unicornId)); uint price = breedingDB.offerPriceEth(_unicornId); //Выставлять на продажу за 0 можно. Но нужно проверить чтобы и вторая цена также была 0 if (price == 0) { require(breedingDB.offerPriceCandy(_unicornId) == 0); } require(msg.value == getOfferPriceEth(_unicornId)); address owner = unicornToken.ownerOf(_unicornId); emit UnicornSold(_unicornId, price, 0); //deleteoffer вызовется внутри transfer unicornToken.marketTransfer(owner, msg.sender, _unicornId); owner.transfer(price); } function buyUnicornWithCandy(uint _unicornId) whenNotPaused public { require(breedingDB.offerExists(_unicornId)); uint price = breedingDB.offerPriceCandy(_unicornId); //Выставлять на продажу за 0 можно. Но нужно проверить чтобы и вторая цена также была 0 if (price == 0) { require(breedingDB.offerPriceEth(_unicornId) == 0); } address owner = unicornToken.ownerOf(_unicornId); if (price > 0) { uint fullPrice = getOfferPriceCandy(_unicornId); require(balances.transferWithFee(candyTokenAddress, msg.sender, fullPrice, balances, owner, price)); } emit UnicornSold(_unicornId, 0, price); //deleteoffer вызовется внутри transfer unicornToken.marketTransfer(owner, msg.sender, _unicornId); } function revokeUnicorn(uint _unicornId) whenNotPaused public { require(unicornToken.owns(msg.sender, _unicornId)); //require(breedingDB.offerExists(_unicornId)); _deleteOffer(_unicornId); } function deleteOffer(uint _unicornId) onlyUnicornToken external { _deleteOffer(_unicornId); } function _deleteOffer(uint _unicornId) internal { if (breedingDB.offerExists(_unicornId)) { breedingDB.deleteOffer(_unicornId); emit OfferDelete(_unicornId); } } function getOfferPriceEth(uint _unicornId) public view returns (uint) { uint priceEth = breedingDB.offerPriceEth(_unicornId); return priceEth.add(valueFromPercent(priceEth, sellDividendPercentEth)); } function getOfferPriceCandy(uint _unicornId) public view returns (uint) { uint priceCandy = breedingDB.offerPriceCandy(_unicornId); return priceCandy.add(valueFromPercent(priceCandy, sellDividendPercentCandy)); } function setSellDividendPercent(uint _percentCandy, uint _percentEth) public onlyManager { //no more then 25% require(_percentCandy < 2500 && _percentEth < 2500); sellDividendPercentCandy = _percentCandy; sellDividendPercentEth = _percentEth; emit NewSellDividendPercent(_percentCandy, _percentEth); } //1% - 100, 10% - 1000 50% - 5000 function valueFromPercent(uint _value, uint _percent) internal pure returns (uint amount) { uint _amount = _value.mul(_percent).div(10000); return (_amount); } } contract UnicornCoinMarket is UnicornMarket { uint public feeTake = 5000000000000000; // 0.5% percentage times (1 ether) mapping (address => mapping (bytes32 => uint)) public orderFills; // mapping of user accounts to mapping of order hashes to uints (amount of order that has been filled) mapping (address => bool) public tokensWithoutFee; /// Logging Events event Trade(bytes32 indexed hash, address tokenGet, uint amountGet, address tokenGive, uint amountGive, address get, address give); /// Changes the fee on takes. function changeFeeTake(uint feeTake_) external onlyOwner { feeTake = feeTake_; } function setTokenWithoutFee(address _token, bool _takeFee) external onlyOwner { tokensWithoutFee[_token] = _takeFee; } //////////////////////////////////////////////////////////////////////////////// // Trading //////////////////////////////////////////////////////////////////////////////// /** * Facilitates a trade from one user to another. * Requires that the transaction is signed properly, the trade isn't past its expiration, and all funds are present to fill the trade. * Calls tradeBalances(). * Updates orderFills with the amount traded. * Emits a Trade event. * Note: tokenGet & tokenGive can be the Ethereum contract address. * Note: amount is in amountGet / tokenGet terms. * @param tokenGet Ethereum contract address of the token to receive * @param amountGet uint amount of tokens being received * @param tokenGive Ethereum contract address of the token to give * @param amountGive uint amount of tokens being given * @param expires uint of block number when this order should expire * @param nonce arbitrary random number * @param user Ethereum address of the user who placed the order * @param v part of signature for the order hash as signed by user * @param r part of signature for the order hash as signed by user * @param s part of signature for the order hash as signed by user * @param amount uint amount in terms of tokenGet that will be "buy" in the trade */ function trade(address tokenGet, uint amountGet, address tokenGive, uint amountGive, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s, uint amount) external { bytes32 hash = sha256(balances, tokenGet, amountGet, tokenGive, amountGive, expires, nonce); require( ecrecover(keccak256(keccak256("bytes32 Order hash"), keccak256(hash)), v, r, s) == user && block.number <= expires && orderFills[user][hash].add(amount) <= amountGet ); uint amount2 = tradeBalances(tokenGet, amountGet, tokenGive, amountGive, user, amount); orderFills[user][hash] = orderFills[user][hash].add(amount); emit Trade(hash, tokenGet, amount, tokenGive, amount2, user, msg.sender); } /** * This is a private function and is only being called from trade(). * Handles the movement of funds when a trade occurs. * Takes fees. * Updates token balances for both buyer and seller. * Note: tokenGet & tokenGive can be the Ethereum contract address. * Note: amount is in amountGet / tokenGet terms. * @param tokenGet Ethereum contract address of the token to receive * @param amountGet uint amount of tokens being received * @param tokenGive Ethereum contract address of the token to give * @param amountGive uint amount of tokens being given * @param user Ethereum address of the user who placed the order * @param amount uint amount in terms of tokenGet that will be "buy" in the trade */ function tradeBalances(address tokenGet, uint amountGet, address tokenGive, uint amountGive, address user, uint amount) private returns(uint amount2){ uint _fee = 0; if (!tokensWithoutFee[tokenGet]) { _fee = amount.mul(feeTake).div(1 ether); } if (balances.trustedTokens(tokenGet)) { TrustedTokenInterface t = TrustedTokenInterface(tokenGet); require(t.transferFromSystem(msg.sender, user, amount)); require(t.transferFromSystem(msg.sender, this, _fee)); } else { require( balances.transferWithFee(tokenGet, msg.sender, amount, balances, user, amount.sub(_fee)) ); // balances.tokenMinus(tokenGet, msg.sender, amount); // balances.tokenPlus(tokenGet, user, amount.sub(_fee)); // balances.tokenPlus(tokenGet, this, _fee); } amount2 = amountGive.mul(amount).div(amountGet); if (balances.trustedTokens(tokenGive)) { require(TrustedTokenInterface(tokenGive).transferFromSystem(user, msg.sender, amount2)); } else { require(balances.transfer(tokenGive, user, msg.sender, amount2)); } } } contract UnicornContract is UnicornCoinMarket { event FundsTransferred(address dividendManager, uint value); function() public payable { } function UnicornContract(address _breedingDB, address _balances, address _unicornManagementAddress) UnicornAccessControl(_unicornManagementAddress) public { candyTokenAddress = unicornManagement.candyToken(); breedingDB = BreedingDataBaseInterface(_breedingDB); balances = UnicornBalancesInterface(_balances); } function init() onlyManagement whenPaused external { unicornToken = UnicornTokenInterface(unicornManagement.unicornTokenAddress()); blackBox = BlackBoxInterface(unicornManagement.blackBoxAddress()); megaCandyToken = TrustedTokenInterface(unicornManagement.candyPowerToken()); } function transferTokensToDividendManager(address _token) onlyManager public { require(ERC20(_token).balanceOf(this) > 0); ERC20(_token).transfer(unicornManagement.walletAddress(), ERC20(_token).balanceOf(this)); } function transferEthersToDividendManager(uint _value) onlyManager public { require(address(this).balance >= _value); DividendManagerInterface dividendManager = DividendManagerInterface(unicornManagement.dividendManagerAddress()); dividendManager.payDividend.value(_value)(); emit FundsTransferred(unicornManagement.dividendManagerAddress(), _value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"isGamePaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_takeFee","type":"bool"}],"name":"setTokenWithoutFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenGet","type":"address"},{"name":"amountGet","type":"uint256"},{"name":"tokenGive","type":"address"},{"name":"amountGive","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"amount","type":"uint256"}],"name":"trade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"breedingDB","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orderFills","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"getHybridizationPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"makeHybridization","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"getOfferPriceCandy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"},{"name":"_priceEth","type":"uint256"},{"name":"_priceCandy","type":"uint256"}],"name":"sellUnicorn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"cancelHybridization","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCreateUnicornPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_firstUnicornId","type":"uint256"},{"name":"_secondUnicornId","type":"uint256"}],"name":"selfHybridization","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"enableFreezePriceRateRecalc","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"buyUnicornWithEth","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"},{"name":"_count","type":"uint256"}],"name":"minusFreezingTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_count","type":"uint256"},{"name":"_owner","type":"address"}],"name":"createPresaleUnicorns","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"createUnicornForCandy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"getUnfreezingPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unicornToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"getOfferPriceEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"deleteOffer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"balances","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"feeTake_","type":"uint256"}],"name":"changeFeeTake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"createUnicorn","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"unicornManagement","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_percentCandy","type":"uint256"},{"name":"_percentEth","type":"uint256"}],"name":"setSellDividendPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_percentCandy","type":"uint256"}],"name":"setSelfHybridizationPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"revokeUnicorn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellDividendPercentCandy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blackBox","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokensWithoutFee","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeTake","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"deleteHybridization","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"isUnfreezed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"buyUnicornWithCandy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_firstUnicornId","type":"uint256"},{"name":"_secondUnicornId","type":"uint256"}],"name":"acceptHybridization","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getEtherFeeForPriceInCandy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"selfHybridizationPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellDividendPercentEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setGen0Limit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"transferTokensToDividendManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCreateUnicornPriceInCandy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"candyTokenAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"transferEthersToDividendManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"megaCandyToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_breedingDB","type":"address"},{"name":"_balances","type":"address"},{"name":"_unicornManagementAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"dividendManager","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"FundsTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"tokenGet","type":"address"},{"indexed":false,"name":"amountGet","type":"uint256"},{"indexed":false,"name":"tokenGive","type":"address"},{"indexed":false,"name":"amountGive","type":"uint256"},{"indexed":false,"name":"get","type":"address"},{"indexed":false,"name":"give","type":"address"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"percentCandy","type":"uint256"},{"indexed":false,"name":"percentCandyEth","type":"uint256"}],"name":"NewSellDividendPercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"priceEth","type":"uint256"},{"indexed":false,"name":"priceCandy","type":"uint256"}],"name":"OfferAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"}],"name":"OfferDelete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"priceEth","type":"uint256"},{"indexed":false,"name":"priceCandy","type":"uint256"}],"name":"UnicornSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"}],"name":"FreeOffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"HybridizationAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"firstUnicornId","type":"uint256"},{"indexed":true,"name":"secondUnicornId","type":"uint256"},{"indexed":false,"name":"newUnicornId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"HybridizationAccept","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"firstUnicornId","type":"uint256"},{"indexed":true,"name":"secondUnicornId","type":"uint256"},{"indexed":false,"name":"newUnicornId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"SelfHybridization","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"}],"name":"HybridizationDelete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"parent1","type":"uint256"},{"indexed":false,"name":"parent2","type":"uint256"}],"name":"CreateUnicorn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"limit","type":"uint256"}],"name":"NewGen0Limit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"step","type":"uint256"}],"name":"NewGen0Step","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"}],"name":"FreeHybridization","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"percentCandy","type":"uint256"}],"name":"NewSelfHybridizationPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"UnicornFreezingTimeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"count","type":"uint256"}],"name":"MinusFreezingTime","type":"event"}]
Contract Creation Code
606060405260006007556101006040519081016040908152610e108252611c2060208301526170809082015261e10060608201526201fa4060808201526203f48060a08201526206978060c082015262093a8060e082015262000066906008908162000254565b506101006040519081016040908152600080835260036020840152600591830191909152600960608301819052600d6080840152601960a0840181905260c084015260e0830191909152620000bd916008620002f7565b50610177600a55610177600b556611c37937e08000600c553415620000e157600080fd5b6040516060806200504c83398101604052808051919060200180519190602001805160008054600160a060020a031916600160a060020a03838116919091179182905591935083925016632a70d1e7306040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156200018957600080fd5b5af115156200019757600080fd5b5050600054600160a060020a0316915063a63f5e2a90506040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620001f657600080fd5b5af115156200020457600080fd5b505050604051805160068054600160a060020a0319908116600160a060020a0393841617909155600380548216968316969096179095556005805490951693169290921790925550620003789050565b600183019183908215620002e55791602002820160005b83821115620002b157835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026200026b565b8015620002e35782816101000a81549063ffffffff0219169055600401602081600301049283019260010302620002b1565b505b50620002f392915062000351565b5090565b600183019183908215620002e55791602002820160005b83821115620002b157835183826101000a81548163ffffffff021916908360ff16021790555092602001926004016020816003010492830192600103026200030e565b6200037591905b80821115620002f357805463ffffffff1916815560010162000358565b90565b614cc480620003886000396000f3006060604052600436106102165763ffffffff60e060020a6000350416630422ddf3811461021857806304ef13531461023f5780630a19b14a14610263578063134a04ea146102b057806319774d43146102df5780631ed378a1146103135780632394a7971461032957806323d9ea801461034257806329cf90f3146103585780632cf42a6c14610374578063317ffcf21461038a578063341743311461039d57806335cf60df146103ab578063383a194c146103c15780633900f8f6146103cc5780633ae50ce7146103e557806352fa1ac2146103fc57806353b5306b14610404578063544447bb1461041a578063699f0c721461042d57806374268ff2146104435780637bb98a68146104595780638823a9c01461046c5780638d8d50d0146104825780638dca7a011461048a5780638fe2eb9e1461049d578063aa31e4a0146104b6578063af40ce20146104cc578063b93c7d42146104e2578063bd1723e5146104f5578063bfb39cc814610508578063c281309e14610527578063c7024b981461053a578063cbde2ff014610550578063d029a53014610566578063da9287d11461057c578063de763a401461058a578063e1c7392a1461059d578063e51bfd9a146105b0578063e5a07419146105c3578063ec7bb2ac146105d6578063ee360ff0146105e9578063ee81f57c14610608578063fc0656c91461061b578063ff3941531461062e578063ff8028b314610644575b005b341561022357600080fd5b61022b610657565b604051901515815260200160405180910390f35b341561024a57600080fd5b610216600160a060020a036004351660243515156106b2565b341561026e57600080fd5b610216600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e43516610104356101243561014435610752565b34156102bb57600080fd5b6102c36109f9565b604051600160a060020a03909116815260200160405180910390f35b34156102ea57600080fd5b610301600160a060020a0360043516602435610a08565b60405190815260200160405180910390f35b341561031e57600080fd5b610301600435610a25565b341561033457600080fd5b610216600435602435610ae6565b341561034d57600080fd5b610301600435610d87565b341561036357600080fd5b610216600435602435604435610e10565b341561037f57600080fd5b610216600435611037565b341561039557600080fd5b61030161111b565b61021660043560243561115b565b34156103b657600080fd5b610216600435611675565b61021660043561174e565b34156103d757600080fd5b610216600435602435611a40565b61022b600435600160a060020a0360243516611c47565b610301611fbd565b341561040f57600080fd5b61030160043561212e565b341561042557600080fd5b6102c3612284565b341561043857600080fd5b610301600435612293565b341561044e57600080fd5b610216600435612308565b341561046457600080fd5b6102c3612386565b341561047757600080fd5b610216600435612395565b61030161240f565b341561049557600080fd5b6102c3612491565b34156104a857600080fd5b6102166004356024356124a0565b34156104c157600080fd5b61021660043561257a565b34156104d757600080fd5b61021660043561262a565b34156104ed57600080fd5b610301612702565b341561050057600080fd5b6102c3612708565b341561051357600080fd5b61022b600160a060020a0360043516612717565b341561053257600080fd5b61030161272c565b341561054557600080fd5b610216600435612732565b341561055b57600080fd5b61022b6004356127a7565b341561057157600080fd5b61021660043561287a565b610216600435602435612be9565b341561059557600080fd5b61030161322e565b34156105a857600080fd5b61021661326e565b34156105bb57600080fd5b61030161345c565b34156105ce57600080fd5b610301613462565b34156105e157600080fd5b610216613468565b34156105f457600080fd5b610216600160a060020a0360043516613670565b341561061357600080fd5b61030161387a565b341561062657600080fd5b6102c36138ba565b341561063957600080fd5b6102166004356138c9565b341561064f57600080fd5b6102c3613a9b565b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b5af115156106a457600080fd5b505050604051805191505090565b600054600160a060020a0316638f84aa096040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156106f157600080fd5b5af115156106fe57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561072757600080fd5b600160a060020a03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546000908190600290600160a060020a03168e8e8e8e8e8e6040516c01000000000000000000000000600160a060020a0398891681028252968816870260148201526028810195909552929095169093026048830152605c820192909252607c810192909252609c82015260bc016020604051808303816000865af115156107db57600080fd5b50506040518051925050600160a060020a03871660016040517f62797465733332204f72646572206861736800000000000000000000000000008152601201604051809103902084604051908152602001604051809103902060405191825260208201526040908101905180910390208888886040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156108a057600080fd5b505060206040510351600160a060020a03161480156108bf5750884311155b80156108ff5750600160a060020a0387166000908152600d602090815260408083208584529091529020548c906108fc908563ffffffff613aaa16565b11155b151561090a57600080fd5b6109188d8d8d8d8b88613ac4565b600160a060020a0388166000908152600d6020908152604080832086845290915290205490915061094f908463ffffffff613aaa16565b600160a060020a0388166000908152600d60209081526040808320868452909152908190209190915582907f48ff82aefa7342f35d79202e69327025e824234888fba3c16ca6ea0d0a62554a908f9086908f9086908d90339051600160a060020a0396871681526020810195909552928516604080860191909152606085019290925284166080840152921660a082015260c001905180910390a250505050505050505050505050565b600354600160a060020a031681565b600d60209081526000928352604080842090915290825290205481565b60008054600354600160a060020a039182169163e8474230911663020f899a8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a7b57600080fd5b5af11515610a8857600080fd5b5050506040518051905060405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ac857600080fd5b5af11515610ad557600080fd5b50505060405180519150505b919050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b2557600080fd5b5af11515610b3257600080fd5b5050506040518051159050610b4657600080fd5b600454600160a060020a031663818d4b5d338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b9c57600080fd5b5af11515610ba957600080fd5b505050604051805190501515610bbe57600080fd5b610bc7826127a7565b1515610bd257600080fd5b600354600160a060020a031663ee34c6ad8360405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c1a57600080fd5b5af11515610c2757600080fd5b5050506040518051159050610c3b57600080fd5b600454600090600160a060020a031663614984d184600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610c8d57600080fd5b5af11515610c9a57600080fd5b5050506040518051905060ff16111515610cb357600080fd5b610cbc82613ed8565b600354600160a060020a03166311f02c87838360405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515610d0a57600080fd5b5af11515610d1757600080fd5b505050817f84abd4d356237b35dfca5b88dc4e394c7e9f4cb3b214adcabfabdc6fe1f5f76c8260405190815260200160405180910390a2801515610d8357817f2be3e43f2ef674b10d85513ca8bf940afa4d956bf07c710f5cb89258af357c4e60405160405180910390a25b5050565b6003546000908190600160a060020a0316638a626ba18460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dd457600080fd5b5af11515610de157600080fd5b505050604051805190509050610e09610dfc82600a5461411d565b829063ffffffff613aaa16565b9392505050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e4f57600080fd5b5af11515610e5c57600080fd5b5050506040518051159050610e7057600080fd5b600454600160a060020a031663818d4b5d338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ec657600080fd5b5af11515610ed357600080fd5b505050604051805190501515610ee857600080fd5b600354600160a060020a031663b5c835928460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610f3057600080fd5b5af11515610f3d57600080fd5b5050506040518051159050610f5157600080fd5b600354600160a060020a031663dc35a90084848460405160e060020a63ffffffff8616028152600481019390935260248301919091526044820152606401600060405180830381600087803b1515610fa857600080fd5b5af11515610fb557600080fd5b505050827f13e4d00e26244f0e870ff787588c0980bf9d98eb39577648b77788542f19292a838360405191825260208201526040908101905180910390a281158015610fff575080155b1561103257827fba0d53156948fe5f38f8996945d3eefef1dd8044fb7dd7a32123d8d09b7164c060405160405180910390a25b505050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561107657600080fd5b5af1151561108357600080fd5b505050604051805115905061109757600080fd5b600454600160a060020a031663818d4b5d338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110ed57600080fd5b5af115156110fa57600080fd5b50505060405180519050151561110f57600080fd5b6111188161413e565b50565b60008054600160a060020a0316636a96c63e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561119b57600080fd5b5af115156111a857600080fd5b50505060405180511590506111bc57600080fd5b600454600160a060020a031663818d4b5d338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561121257600080fd5b5af1151561121f57600080fd5b50505060405180519050801561129e5750600454600160a060020a031663818d4b5d338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561128657600080fd5b5af1151561129357600080fd5b505050604051805190505b15156112a957600080fd5b818314156112b657600080fd5b6112bf836127a7565b80156112cf57506112cf826127a7565b15156112da57600080fd5b600454600090600160a060020a031663614984d185600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b151561132c57600080fd5b5af1151561133957600080fd5b5050506040518051905060ff161180156113bc5750600454600090600160a060020a031663614984d184600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b15156113a057600080fd5b5af115156113ad57600080fd5b5050506040518051905060ff16115b15156113c757600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561140657600080fd5b5af1151561141357600080fd5b50505060405180513414905061142857600080fd5b600060075411156114cb57600554600654600754600160a060020a039283169263f18d03cc9216903390849060405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b15156114a957600080fd5b5af115156114b657600080fd5b5050506040518051905015156114cb57600080fd5b6114d4836141d2565b6114dd826141d2565b600454600160a060020a031663ce5a5df73360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561152d57600080fd5b5af1151561153a57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631e5d2e419116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561159257600080fd5b5af1151561159f57600080fd5b5050506040518051905083868660405160e060020a63ffffffff87160281526004810193909352602483019190915260448201526064016000604051808303818588803b15156115ee57600080fd5b5af115156115fb57600080fd5b5050505081837ff74d29979ab38d16cc27c6f61b42ecd102804ed6122ba538fffbc67ea689acda8360075460405191825260208201526040908101905180910390a38033600160a060020a0316600080516020614c79833981519152858560405191825260208201526040908101905180910390a3505050565b600054600160a060020a0316631d296e8d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116b457600080fd5b5af115156116c157600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156116ea57600080fd5b600354600160a060020a03166354e921cb82600160405160e060020a63ffffffff8516028152600481019290925215156024820152604401600060405180830381600087803b151561173b57600080fd5b5af1151561174857600080fd5b50505050565b600080548190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561179057600080fd5b5af1151561179d57600080fd5b50505060405180511590506117b157600080fd5b600354600160a060020a031663b5c835928460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156117f957600080fd5b5af1151561180657600080fd5b50505060405180519050151561181b57600080fd5b600354600160a060020a031663ef4ba5988460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561186357600080fd5b5af1151561187057600080fd5b50505060405180519250508115156118eb57600354600160a060020a0316638a626ba18460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156118ca57600080fd5b5af115156118d757600080fd5b50505060405180511590506118eb57600080fd5b6118f483612293565b34146118ff57600080fd5b600454600160a060020a0316636352211e8460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561194757600080fd5b5af1151561195457600080fd5b505050604051805190509050827f2ea9d733fc3abfc39714b4ba66cc5968e15977a6335e955ec1e3bef0dc9c772d83600060405191825260208201526040908101905180910390a2600454600160a060020a031663bcf0dd8e82338660405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b15156119ff57600080fd5b5af11515611a0c57600080fd5b505050600160a060020a0381166108fc83150283604051600060405180830381858888f19350505050151561103257600080fd5b6000611a4b8361212e565b600254909150600160a060020a0316639dc29fac33611a70848663ffffffff6144c516565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611ab357600080fd5b5af11515611ac057600080fd5b505050604051805190501515611ad557600080fd5b6003544290600160a060020a0316630ecda1138560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611b1f57600080fd5b5af11515611b2c57600080fd5b50505060405180519050111515611b4257600080fd5b600354600054600160a060020a03918216916309850495918691611bc391879116639ea764756040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b9657600080fd5b5af11515611ba357600080fd5b505050604051805167ffffffffffffffff1691905063ffffffff6144c516565b60405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515611bfe57600080fd5b5af11515611c0b57600080fd5b505050827fb104872e32a5db292bde51a9980d0b23c6c8051fe9cb2f19478ceb0161db77878360405190815260200160405180910390a2505050565b60008054819081908190600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611c8d57600080fd5b5af11515611c9a57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515611cc357600080fd5b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611d0257600080fd5b5af11515611d0f57600080fd5b505050604051805190501515611d2457600080fd5b600354600160a060020a0316637cd022d46040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611d6357600080fd5b5af11515611d7057600080fd5b5050506040518051600354909150611de3908890600160a060020a0316638091fbe16040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611dc057600080fd5b5af11515611dcd57600080fd5b505050604051805191905063ffffffff613aaa16565b1115611dee57600080fd5b600160a060020a03851615611e035784611e05565b335b9150600090505b85811015611fb157600454600160a060020a031663ce5a5df78360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611e6457600080fd5b5af11515611e7157600080fd5b5050506040518051600154909450600160a060020a03169050631a9caab98460405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515611ec657600080fd5b5af11515611ed357600080fd5b5050508282600160a060020a0316600080516020614c7983398151915260008060405191825260208201526040908101905180910390a3600354600160a060020a0316635c752f6b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611f4957600080fd5b5af11515611f5657600080fd5b5050600354600160a060020a0316905063de0d50e46040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611f9957600080fd5b5af11515611fa657600080fd5b505050600101611e0c565b50600195945050505050565b600080548190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611fff57600080fd5b5af1151561200c57600080fd5b505050604051805115905061202057600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561205f57600080fd5b5af1151561206c57600080fd5b50505060405180513414905061208157600080fd5b61208961387a565b600554600654919250600160a060020a039081169163f18d03cc911633838560405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b15156120fd57600080fd5b5af1151561210a57600080fd5b50505060405180519050151561211f57600080fd5b612128336144f0565b91505090565b6003546000908190600890600160a060020a031663f8cbd5808560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561217e57600080fd5b5af1151561218b57600080fd5b505050604051805190506008811061219f57fe5b60088104919091015460035460079092166004026101000a900463ffffffff169150610e0990829061227890612216908390600160a060020a03166365089dd88960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611dc057600080fd5b600054600160a060020a03166373def2b76040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561225557600080fd5b5af1151561226257600080fd5b505050604051805191905063ffffffff6144c516565b9063ffffffff61474b16565b600454600160a060020a031681565b6003546000908190600160a060020a031663ef4ba5988460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156122e057600080fd5b5af115156122ed57600080fd5b505050604051805190509050610e09610dfc82600b5461411d565b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561234757600080fd5b5af1151561235457600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561237d57600080fd5b61111881614762565b600554600160a060020a031681565b600054600160a060020a0316638f84aa096040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156123d457600080fd5b5af115156123e157600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561240a57600080fd5b600c55565b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561244f57600080fd5b5af1151561245c57600080fd5b505050604051805115905061247057600080fd5b61247861111b565b341461248357600080fd5b61248c336144f0565b905090565b600054600160a060020a031681565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156124df57600080fd5b5af115156124ec57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561251557600080fd5b6109c48210801561252757506109c481105b151561253257600080fd5b600a829055600b8190557f30c8ebfc35cc822986e28f932b0a3ec7ddeb7d22b2e2069c8418b8f6bb2be664828260405191825260208201526040908101905180910390a15050565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156125b957600080fd5b5af115156125c657600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156125ef57600080fd5b60078190557fb2b64ec3f4c18a4ea3329df9d86b4abb877dc0b4fb206cfe2165d904cf82559b8160405190815260200160405180910390a150565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561266957600080fd5b5af1151561267657600080fd5b505050604051805115905061268a57600080fd5b600454600160a060020a031663818d4b5d338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156126e057600080fd5b5af115156126ed57600080fd5b50505060405180519050151561237d57600080fd5b600a5481565b600154600160a060020a031681565b600e6020526000908152604090205460ff1681565b600c5481565b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561277157600080fd5b5af1151561277e57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561110f57600080fd5b600454600090600160a060020a031663cbde2ff08360405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156127f257600080fd5b5af115156127ff57600080fd5b50505060405180519050801561287457506003544290600160a060020a0316630ecda1138460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561285a57600080fd5b5af1151561286757600080fd5b5050506040518051905011155b92915050565b6000805481908190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156128be57600080fd5b5af115156128cb57600080fd5b50505060405180511590506128df57600080fd5b600354600160a060020a031663b5c835928560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561292757600080fd5b5af1151561293457600080fd5b50505060405180519050151561294957600080fd5b600354600160a060020a0316638a626ba18560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561299157600080fd5b5af1151561299e57600080fd5b5050506040518051935050821515612a1957600354600160a060020a031663ef4ba5988560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156129f857600080fd5b5af11515612a0557600080fd5b5050506040518051159050612a1957600080fd5b600454600160a060020a0316636352211e8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612a6157600080fd5b5af11515612a6e57600080fd5b50505060405180519250506000831115612b3457612a8b84610d87565b600554600654919250600160a060020a0390811691635b99df7f9116338484878960405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b1515612b1257600080fd5b5af11515612b1f57600080fd5b505050604051805190501515612b3457600080fd5b837f2ea9d733fc3abfc39714b4ba66cc5968e15977a6335e955ec1e3bef0dc9c772d60008560405191825260208201526040908101905180910390a2600454600160a060020a031663bcf0dd8e83338760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515612bd357600080fd5b5af11515612be057600080fd5b50505050505050565b6000805481908190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612c2d57600080fd5b5af11515612c3a57600080fd5b5050506040518051159050612c4e57600080fd5b600454600160a060020a031663818d4b5d338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612ca457600080fd5b5af11515612cb157600080fd5b505050604051805190501515612cc657600080fd5b83851415612cd357600080fd5b612cdc856127a7565b8015612cec5750612cec846127a7565b1515612cf757600080fd5b600354600160a060020a031663ee34c6ad8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612d3f57600080fd5b5af11515612d4c57600080fd5b505050604051805190501515612d6157600080fd5b600454600090600160a060020a031663614984d187600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515612db357600080fd5b5af11515612dc057600080fd5b5050506040518051905060ff16118015612e435750600454600090600160a060020a031663614984d186600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515612e2757600080fd5b5af11515612e3457600080fd5b5050506040518051905060ff16115b1515612e4e57600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612e8d57600080fd5b5af11515612e9a57600080fd5b505050604051805134149050612eaf57600080fd5b600354600160a060020a031663020f899a8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612ef757600080fd5b5af11515612f0457600080fd5b5050506040518051935050600083111561307b57600054600160a060020a031663e84742308460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612f6057600080fd5b5af11515612f6d57600080fd5b5050506040518051600554600654600454929550600160a060020a039182169350635b99df7f929082169133918791869116636352211e8c60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612fdb57600080fd5b5af11515612fe857600080fd5b505050604051805190508960405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b151561305957600080fd5b5af1151561306657600080fd5b50505060405180519050151561307b57600080fd5b613084856141d2565b61308d846141d2565b600454600160a060020a031663ce5a5df73360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156130dd57600080fd5b5af115156130ea57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631e5d2e419116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561314257600080fd5b5af1151561314f57600080fd5b5050506040518051905083888860405160e060020a63ffffffff87160281526004810193909352602483019190915260448201526064016000604051808303818588803b151561319e57600080fd5b5af115156131ab57600080fd5b5050505083857ff0b757e02a273cc60dcbb8fb9fd8157b50a8c73af2a6bb8b7917d7c895482575838660405191825260208201526040908101905180910390a38033600160a060020a0316600080516020614c79833981519152878760405191825260208201526040908101905180910390a36132278561413e565b5050505050565b60008054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b60005433600160a060020a0390811691161461328957600080fd5b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156132c857600080fd5b5af115156132d557600080fd5b5050506040518051905015156132ea57600080fd5b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561332957600080fd5b5af1151561333657600080fd5b50505060405180516004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03928316179055600054169050635550e4f36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156133a057600080fd5b5af115156133ad57600080fd5b50505060405180516001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392831617905560005416905063a76d368a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561341757600080fd5b5af1151561342457600080fd5b50505060405180516002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905550565b60075481565b600b5481565b600054600160a060020a03166386e476dd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156134a757600080fd5b5af115156134b457600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156134dd57600080fd5b600354600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561351c57600080fd5b5af1151561352957600080fd5b5050506040518051600354909150600160a060020a031663b30387a46040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561357357600080fd5b5af1151561358057600080fd5b5050506040518051905014151561359657600080fd5b600354600160a060020a0316633c2f7df56040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156135d557600080fd5b5af115156135e257600080fd5b50506003547f82a435bab9dac7abe42e365cda0c3cb0f64bf2b839af282f9e312d2d66145c849150600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561364657600080fd5b5af1151561365357600080fd5b5050506040518051905060405190815260200160405180910390a1565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156136af57600080fd5b5af115156136bc57600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156136e557600080fd5b600081600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561373557600080fd5b5af1151561374257600080fd5b5050506040518051905011151561375857600080fd5b600054600160a060020a038083169163a9059cbb9116636ad5b3ea6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156137a157600080fd5b5af115156137ae57600080fd5b5050506040518051905083600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561380657600080fd5b5af1151561381357600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561386057600080fd5b5af1151561386d57600080fd5b5050506040518051505050565b60008054600160a060020a031663a2c174596040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b600654600160a060020a031681565b60008054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561390957600080fd5b5af1151561391657600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561393f57600080fd5b600160a060020a033016318290101561395757600080fd5b600054600160a060020a03166349b7a9c26040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561399657600080fd5b5af115156139a357600080fd5b5050506040518051915050600160a060020a038116630b6826ca836040518263ffffffff1660e060020a0281526004016000604051808303818588803b15156139eb57600080fd5b5af115156139f857600080fd5b50506000547f8c9a4f13b67cb64d7c6aa1ae0c9bf07694af521a28b93e7060020810ab4bc59f9250600160a060020a031690506349b7a9c26040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515613a5e57600080fd5b5af11515613a6b57600080fd5b5050506040518051905083604051600160a060020a03909216825260208201526040908101905180910390a15050565b600254600160a060020a031681565b600082820183811015613ab957fe5b8091505b5092915050565b600160a060020a0386166000908152600e60205260408120548190819060ff161515613b0e57613b0b670de0b6b3a7640000612278600c54876144c590919063ffffffff16565b91505b600554600160a060020a0316633cac23878a60405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613b5e57600080fd5b5af11515613b6b57600080fd5b5050506040518051905015613c87575087600160a060020a0381166351118f1d33878760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613bdd57600080fd5b5af11515613bea57600080fd5b505050604051805190501515613bff57600080fd5b80600160a060020a03166351118f1d33308560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613c6057600080fd5b5af11515613c6d57600080fd5b505050604051805190501515613c8257600080fd5b613d35565b600554600160a060020a0316635b99df7f8a3387848a613cad838a63ffffffff61484e16565b60405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b1515613d1357600080fd5b5af11515613d2057600080fd5b505050604051805190501515613d3557600080fd5b613d4988612278888763ffffffff6144c516565b600554909350600160a060020a0316633cac23878860405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613d9c57600080fd5b5af11515613da957600080fd5b5050506040518051905015613e405786600160a060020a03166351118f1d86338660405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613e1957600080fd5b5af11515613e2657600080fd5b505050604051805190501515613e3b57600080fd5b613ecc565b600554600160a060020a031663f18d03cc8887338760405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b1515613eaa57600080fd5b5af11515613eb757600080fd5b505050604051805190501515613ecc57600080fd5b50509695505050505050565b600354600160a060020a031663dd1b89c68260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515613f2057600080fd5b5af11515613f2d57600080fd5b50505060405180519050151561400157600354600454600160a060020a03918216916347e4ddf29184911663614984d18260a360405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515613f9b57600080fd5b5af11515613fa857600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401600060405180830381600087803b1515613ff057600080fd5b5af11515613ffd57600080fd5b5050505b600354600160a060020a03166391256ed08260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561404957600080fd5b5af1151561405657600080fd5b505050604051805190501561111857600354600160a060020a03166354e921cb82600060405160e060020a63ffffffff8516028152600481019290925215156024820152604401600060405180830381600087803b15156140b657600080fd5b5af115156140c357600080fd5b5050600354600160a060020a03169050632b100a31826140e281614860565b60405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b151561173b57600080fd5b600080614136612710612278868663ffffffff6144c516565b949350505050565b600354600160a060020a031663c7024b988260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561418657600080fd5b5af1151561419357600080fd5b505050604051805190501561111857807f868a9e71dfb115bed3ee872d882e85e6054c40386de4fbb9b016f78717d7b9ed60405160405180910390a250565b60006141dd82613ed8565b60038054600160a060020a0316630c5162838460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561422657600080fd5b5af1151561423357600080fd5b5050506040518051905010156142a057600354600160a060020a031663b556a8958360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561428b57600080fd5b5af1151561429857600080fd5b5050506143c1565b600354600790600160a060020a031663f8cbd5808460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156142eb57600080fd5b5af115156142f857600080fd5b5050506040518051905010156143c157600354600160a060020a0316639616b4108360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561435057600080fd5b5af1151561435d57600080fd5b5050600354600160a060020a0316905063549ddcbd83600060405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b15156143b057600080fd5b5af115156143bd57600080fd5b5050505b600354429061442b90600160a060020a031663f8cbd5808560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561440f57600080fd5b5af1151561441c57600080fd5b50505060405180519050614b26565b60035491019150600160a060020a031663883a92e1838360405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b151561447d57600080fd5b5af1151561448a57600080fd5b505050817fdd9be30312ed220ed4ad7da78e6ee32d6652506b26c7de8d06e849fa224d1c5d8260405190815260200160405180910390a25050565b6000808315156144d85760009150613abd565b508282028284828115156144e857fe5b0414613ab957fe5b6003546000908190600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561453457600080fd5b5af1151561454157600080fd5b5050506040518051600354909150600160a060020a031663b30387a46040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561458b57600080fd5b5af1151561459857600080fd5b505050604051805190501015156145ae57600080fd5b600454600160a060020a031663ce5a5df78460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156145fe57600080fd5b5af1151561460b57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631a9caab99116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561466357600080fd5b5af1151561467057600080fd5b505050604051805190508360405160e060020a63ffffffff851602815260048101919091526024016000604051808303818588803b15156146b057600080fd5b5af115156146bd57600080fd5b505050508083600160a060020a0316600080516020614c7983398151915260008060405191825260208201526040908101905180910390a3600354600160a060020a0316635c752f6b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561473457600080fd5b5af1151561474157600080fd5b5091949350505050565b600080828481151561475957fe5b04949350505050565b600354600160a060020a031663b5c835928260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156147aa57600080fd5b5af115156147b757600080fd5b505050604051805190501561111857600354600160a060020a03166374268ff28260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561480e57600080fd5b5af1151561481b57600080fd5b505050807f5ea1bcce7d1009a8f5578c7ae0fb858880637a891d4e67851c12e37b35f59c6360405160405180910390a250565b60008282111561485a57fe5b50900390565b600061486a614c35565b614872614c5d565b61487a614c5d565b600080600060a060405190810160409081526070825260756020830152607a81830152607f60608301526084608083015290965061014090519081016040908152600d825260126020830152601781830152601c606083015260216080830152602660a0830152602b60c0830152603060e08301526035610100830152603a6101208301529095506101409051908101604090815260578252605c602083015260619082015260666060820152606b6080820152608960a0820152608e60c0820152609360e08201526098610100820152609d6101208201529350600092508291505b60058210156149f057600454600160a060020a031663614984d18988856005811061498457fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b15156149c757600080fd5b5af115156149d457600080fd5b505050604051805160ff1693909301925060019091019061495d565b600091505b600a821015614b1757600454600160a060020a031663614984d1898685600a8110614a1c57fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515614a5f57600080fd5b5af11515614a6c57600080fd5b505050604051805160ff16915050801515614b0857600454614b0290600160a060020a031663614984d18a8886600a8110614aa357fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515614ae657600080fd5b5af11515614af357600080fd5b50505060405180519050614bcd565b60ff1690505b918201916001909101906149f5565b5050610e100295945050505050565b6000600882818110614b3457fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff169050600982600881101515614b6757fe5b60088104919091015460079091166004026101000a900463ffffffff1615610ae15760098260088110614b9657fe5b60088104919091015460079091166004026101000a900463ffffffff16436000190140811515614bc257fe5b06610e100201919050565b600060018260ff1610614c2d5760bd8260ff1610614c255760e08260ff1610614c1d5760f48260ff1610614c155760fe8260ff1610614c0d576005614c10565b60045b614c18565b60035b614c20565b60025b614c28565b60015b612874565b506000919050565b60a06040519081016040526005815b600081526000199091019060200181614c445790505090565b61014060405190810160405260008152600960208201614c44560051b6670023a2e348a2cb6b181f6ceed38b9ca16e2a416c7f437722cda97264d0a165627a7a72305820aa118b975d422de22dabc794fd0c9e187d7312f52af3d10fcb3c3fa797d785e10029000000000000000000000000cd3fa0487f41cc2fe73d3278f5356ffee0cbcc4b0000000000000000000000006cbd7992d39a106a64807125899b2dfc02a4369400000000000000000000000010cc060f6f9b2e5dcdb23f1361e4b368a7daec73
Deployed Bytecode
0x6060604052600436106102165763ffffffff60e060020a6000350416630422ddf3811461021857806304ef13531461023f5780630a19b14a14610263578063134a04ea146102b057806319774d43146102df5780631ed378a1146103135780632394a7971461032957806323d9ea801461034257806329cf90f3146103585780632cf42a6c14610374578063317ffcf21461038a578063341743311461039d57806335cf60df146103ab578063383a194c146103c15780633900f8f6146103cc5780633ae50ce7146103e557806352fa1ac2146103fc57806353b5306b14610404578063544447bb1461041a578063699f0c721461042d57806374268ff2146104435780637bb98a68146104595780638823a9c01461046c5780638d8d50d0146104825780638dca7a011461048a5780638fe2eb9e1461049d578063aa31e4a0146104b6578063af40ce20146104cc578063b93c7d42146104e2578063bd1723e5146104f5578063bfb39cc814610508578063c281309e14610527578063c7024b981461053a578063cbde2ff014610550578063d029a53014610566578063da9287d11461057c578063de763a401461058a578063e1c7392a1461059d578063e51bfd9a146105b0578063e5a07419146105c3578063ec7bb2ac146105d6578063ee360ff0146105e9578063ee81f57c14610608578063fc0656c91461061b578063ff3941531461062e578063ff8028b314610644575b005b341561022357600080fd5b61022b610657565b604051901515815260200160405180910390f35b341561024a57600080fd5b610216600160a060020a036004351660243515156106b2565b341561026e57600080fd5b610216600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e43516610104356101243561014435610752565b34156102bb57600080fd5b6102c36109f9565b604051600160a060020a03909116815260200160405180910390f35b34156102ea57600080fd5b610301600160a060020a0360043516602435610a08565b60405190815260200160405180910390f35b341561031e57600080fd5b610301600435610a25565b341561033457600080fd5b610216600435602435610ae6565b341561034d57600080fd5b610301600435610d87565b341561036357600080fd5b610216600435602435604435610e10565b341561037f57600080fd5b610216600435611037565b341561039557600080fd5b61030161111b565b61021660043560243561115b565b34156103b657600080fd5b610216600435611675565b61021660043561174e565b34156103d757600080fd5b610216600435602435611a40565b61022b600435600160a060020a0360243516611c47565b610301611fbd565b341561040f57600080fd5b61030160043561212e565b341561042557600080fd5b6102c3612284565b341561043857600080fd5b610301600435612293565b341561044e57600080fd5b610216600435612308565b341561046457600080fd5b6102c3612386565b341561047757600080fd5b610216600435612395565b61030161240f565b341561049557600080fd5b6102c3612491565b34156104a857600080fd5b6102166004356024356124a0565b34156104c157600080fd5b61021660043561257a565b34156104d757600080fd5b61021660043561262a565b34156104ed57600080fd5b610301612702565b341561050057600080fd5b6102c3612708565b341561051357600080fd5b61022b600160a060020a0360043516612717565b341561053257600080fd5b61030161272c565b341561054557600080fd5b610216600435612732565b341561055b57600080fd5b61022b6004356127a7565b341561057157600080fd5b61021660043561287a565b610216600435602435612be9565b341561059557600080fd5b61030161322e565b34156105a857600080fd5b61021661326e565b34156105bb57600080fd5b61030161345c565b34156105ce57600080fd5b610301613462565b34156105e157600080fd5b610216613468565b34156105f457600080fd5b610216600160a060020a0360043516613670565b341561061357600080fd5b61030161387a565b341561062657600080fd5b6102c36138ba565b341561063957600080fd5b6102166004356138c9565b341561064f57600080fd5b6102c3613a9b565b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b5af115156106a457600080fd5b505050604051805191505090565b600054600160a060020a0316638f84aa096040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156106f157600080fd5b5af115156106fe57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561072757600080fd5b600160a060020a03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546000908190600290600160a060020a03168e8e8e8e8e8e6040516c01000000000000000000000000600160a060020a0398891681028252968816870260148201526028810195909552929095169093026048830152605c820192909252607c810192909252609c82015260bc016020604051808303816000865af115156107db57600080fd5b50506040518051925050600160a060020a03871660016040517f62797465733332204f72646572206861736800000000000000000000000000008152601201604051809103902084604051908152602001604051809103902060405191825260208201526040908101905180910390208888886040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156108a057600080fd5b505060206040510351600160a060020a03161480156108bf5750884311155b80156108ff5750600160a060020a0387166000908152600d602090815260408083208584529091529020548c906108fc908563ffffffff613aaa16565b11155b151561090a57600080fd5b6109188d8d8d8d8b88613ac4565b600160a060020a0388166000908152600d6020908152604080832086845290915290205490915061094f908463ffffffff613aaa16565b600160a060020a0388166000908152600d60209081526040808320868452909152908190209190915582907f48ff82aefa7342f35d79202e69327025e824234888fba3c16ca6ea0d0a62554a908f9086908f9086908d90339051600160a060020a0396871681526020810195909552928516604080860191909152606085019290925284166080840152921660a082015260c001905180910390a250505050505050505050505050565b600354600160a060020a031681565b600d60209081526000928352604080842090915290825290205481565b60008054600354600160a060020a039182169163e8474230911663020f899a8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a7b57600080fd5b5af11515610a8857600080fd5b5050506040518051905060405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ac857600080fd5b5af11515610ad557600080fd5b50505060405180519150505b919050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b2557600080fd5b5af11515610b3257600080fd5b5050506040518051159050610b4657600080fd5b600454600160a060020a031663818d4b5d338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b9c57600080fd5b5af11515610ba957600080fd5b505050604051805190501515610bbe57600080fd5b610bc7826127a7565b1515610bd257600080fd5b600354600160a060020a031663ee34c6ad8360405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c1a57600080fd5b5af11515610c2757600080fd5b5050506040518051159050610c3b57600080fd5b600454600090600160a060020a031663614984d184600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610c8d57600080fd5b5af11515610c9a57600080fd5b5050506040518051905060ff16111515610cb357600080fd5b610cbc82613ed8565b600354600160a060020a03166311f02c87838360405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515610d0a57600080fd5b5af11515610d1757600080fd5b505050817f84abd4d356237b35dfca5b88dc4e394c7e9f4cb3b214adcabfabdc6fe1f5f76c8260405190815260200160405180910390a2801515610d8357817f2be3e43f2ef674b10d85513ca8bf940afa4d956bf07c710f5cb89258af357c4e60405160405180910390a25b5050565b6003546000908190600160a060020a0316638a626ba18460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dd457600080fd5b5af11515610de157600080fd5b505050604051805190509050610e09610dfc82600a5461411d565b829063ffffffff613aaa16565b9392505050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e4f57600080fd5b5af11515610e5c57600080fd5b5050506040518051159050610e7057600080fd5b600454600160a060020a031663818d4b5d338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ec657600080fd5b5af11515610ed357600080fd5b505050604051805190501515610ee857600080fd5b600354600160a060020a031663b5c835928460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610f3057600080fd5b5af11515610f3d57600080fd5b5050506040518051159050610f5157600080fd5b600354600160a060020a031663dc35a90084848460405160e060020a63ffffffff8616028152600481019390935260248301919091526044820152606401600060405180830381600087803b1515610fa857600080fd5b5af11515610fb557600080fd5b505050827f13e4d00e26244f0e870ff787588c0980bf9d98eb39577648b77788542f19292a838360405191825260208201526040908101905180910390a281158015610fff575080155b1561103257827fba0d53156948fe5f38f8996945d3eefef1dd8044fb7dd7a32123d8d09b7164c060405160405180910390a25b505050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561107657600080fd5b5af1151561108357600080fd5b505050604051805115905061109757600080fd5b600454600160a060020a031663818d4b5d338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110ed57600080fd5b5af115156110fa57600080fd5b50505060405180519050151561110f57600080fd5b6111188161413e565b50565b60008054600160a060020a0316636a96c63e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561119b57600080fd5b5af115156111a857600080fd5b50505060405180511590506111bc57600080fd5b600454600160a060020a031663818d4b5d338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561121257600080fd5b5af1151561121f57600080fd5b50505060405180519050801561129e5750600454600160a060020a031663818d4b5d338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561128657600080fd5b5af1151561129357600080fd5b505050604051805190505b15156112a957600080fd5b818314156112b657600080fd5b6112bf836127a7565b80156112cf57506112cf826127a7565b15156112da57600080fd5b600454600090600160a060020a031663614984d185600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b151561132c57600080fd5b5af1151561133957600080fd5b5050506040518051905060ff161180156113bc5750600454600090600160a060020a031663614984d184600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b15156113a057600080fd5b5af115156113ad57600080fd5b5050506040518051905060ff16115b15156113c757600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561140657600080fd5b5af1151561141357600080fd5b50505060405180513414905061142857600080fd5b600060075411156114cb57600554600654600754600160a060020a039283169263f18d03cc9216903390849060405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b15156114a957600080fd5b5af115156114b657600080fd5b5050506040518051905015156114cb57600080fd5b6114d4836141d2565b6114dd826141d2565b600454600160a060020a031663ce5a5df73360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561152d57600080fd5b5af1151561153a57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631e5d2e419116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561159257600080fd5b5af1151561159f57600080fd5b5050506040518051905083868660405160e060020a63ffffffff87160281526004810193909352602483019190915260448201526064016000604051808303818588803b15156115ee57600080fd5b5af115156115fb57600080fd5b5050505081837ff74d29979ab38d16cc27c6f61b42ecd102804ed6122ba538fffbc67ea689acda8360075460405191825260208201526040908101905180910390a38033600160a060020a0316600080516020614c79833981519152858560405191825260208201526040908101905180910390a3505050565b600054600160a060020a0316631d296e8d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116b457600080fd5b5af115156116c157600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156116ea57600080fd5b600354600160a060020a03166354e921cb82600160405160e060020a63ffffffff8516028152600481019290925215156024820152604401600060405180830381600087803b151561173b57600080fd5b5af1151561174857600080fd5b50505050565b600080548190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561179057600080fd5b5af1151561179d57600080fd5b50505060405180511590506117b157600080fd5b600354600160a060020a031663b5c835928460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156117f957600080fd5b5af1151561180657600080fd5b50505060405180519050151561181b57600080fd5b600354600160a060020a031663ef4ba5988460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561186357600080fd5b5af1151561187057600080fd5b50505060405180519250508115156118eb57600354600160a060020a0316638a626ba18460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156118ca57600080fd5b5af115156118d757600080fd5b50505060405180511590506118eb57600080fd5b6118f483612293565b34146118ff57600080fd5b600454600160a060020a0316636352211e8460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561194757600080fd5b5af1151561195457600080fd5b505050604051805190509050827f2ea9d733fc3abfc39714b4ba66cc5968e15977a6335e955ec1e3bef0dc9c772d83600060405191825260208201526040908101905180910390a2600454600160a060020a031663bcf0dd8e82338660405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b15156119ff57600080fd5b5af11515611a0c57600080fd5b505050600160a060020a0381166108fc83150283604051600060405180830381858888f19350505050151561103257600080fd5b6000611a4b8361212e565b600254909150600160a060020a0316639dc29fac33611a70848663ffffffff6144c516565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611ab357600080fd5b5af11515611ac057600080fd5b505050604051805190501515611ad557600080fd5b6003544290600160a060020a0316630ecda1138560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611b1f57600080fd5b5af11515611b2c57600080fd5b50505060405180519050111515611b4257600080fd5b600354600054600160a060020a03918216916309850495918691611bc391879116639ea764756040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b9657600080fd5b5af11515611ba357600080fd5b505050604051805167ffffffffffffffff1691905063ffffffff6144c516565b60405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515611bfe57600080fd5b5af11515611c0b57600080fd5b505050827fb104872e32a5db292bde51a9980d0b23c6c8051fe9cb2f19478ceb0161db77878360405190815260200160405180910390a2505050565b60008054819081908190600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611c8d57600080fd5b5af11515611c9a57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515611cc357600080fd5b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611d0257600080fd5b5af11515611d0f57600080fd5b505050604051805190501515611d2457600080fd5b600354600160a060020a0316637cd022d46040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611d6357600080fd5b5af11515611d7057600080fd5b5050506040518051600354909150611de3908890600160a060020a0316638091fbe16040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611dc057600080fd5b5af11515611dcd57600080fd5b505050604051805191905063ffffffff613aaa16565b1115611dee57600080fd5b600160a060020a03851615611e035784611e05565b335b9150600090505b85811015611fb157600454600160a060020a031663ce5a5df78360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611e6457600080fd5b5af11515611e7157600080fd5b5050506040518051600154909450600160a060020a03169050631a9caab98460405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515611ec657600080fd5b5af11515611ed357600080fd5b5050508282600160a060020a0316600080516020614c7983398151915260008060405191825260208201526040908101905180910390a3600354600160a060020a0316635c752f6b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611f4957600080fd5b5af11515611f5657600080fd5b5050600354600160a060020a0316905063de0d50e46040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611f9957600080fd5b5af11515611fa657600080fd5b505050600101611e0c565b50600195945050505050565b600080548190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611fff57600080fd5b5af1151561200c57600080fd5b505050604051805115905061202057600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561205f57600080fd5b5af1151561206c57600080fd5b50505060405180513414905061208157600080fd5b61208961387a565b600554600654919250600160a060020a039081169163f18d03cc911633838560405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b15156120fd57600080fd5b5af1151561210a57600080fd5b50505060405180519050151561211f57600080fd5b612128336144f0565b91505090565b6003546000908190600890600160a060020a031663f8cbd5808560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561217e57600080fd5b5af1151561218b57600080fd5b505050604051805190506008811061219f57fe5b60088104919091015460035460079092166004026101000a900463ffffffff169150610e0990829061227890612216908390600160a060020a03166365089dd88960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611dc057600080fd5b600054600160a060020a03166373def2b76040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561225557600080fd5b5af1151561226257600080fd5b505050604051805191905063ffffffff6144c516565b9063ffffffff61474b16565b600454600160a060020a031681565b6003546000908190600160a060020a031663ef4ba5988460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156122e057600080fd5b5af115156122ed57600080fd5b505050604051805190509050610e09610dfc82600b5461411d565b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561234757600080fd5b5af1151561235457600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561237d57600080fd5b61111881614762565b600554600160a060020a031681565b600054600160a060020a0316638f84aa096040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156123d457600080fd5b5af115156123e157600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561240a57600080fd5b600c55565b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561244f57600080fd5b5af1151561245c57600080fd5b505050604051805115905061247057600080fd5b61247861111b565b341461248357600080fd5b61248c336144f0565b905090565b600054600160a060020a031681565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156124df57600080fd5b5af115156124ec57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561251557600080fd5b6109c48210801561252757506109c481105b151561253257600080fd5b600a829055600b8190557f30c8ebfc35cc822986e28f932b0a3ec7ddeb7d22b2e2069c8418b8f6bb2be664828260405191825260208201526040908101905180910390a15050565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156125b957600080fd5b5af115156125c657600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156125ef57600080fd5b60078190557fb2b64ec3f4c18a4ea3329df9d86b4abb877dc0b4fb206cfe2165d904cf82559b8160405190815260200160405180910390a150565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561266957600080fd5b5af1151561267657600080fd5b505050604051805115905061268a57600080fd5b600454600160a060020a031663818d4b5d338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156126e057600080fd5b5af115156126ed57600080fd5b50505060405180519050151561237d57600080fd5b600a5481565b600154600160a060020a031681565b600e6020526000908152604090205460ff1681565b600c5481565b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561277157600080fd5b5af1151561277e57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561110f57600080fd5b600454600090600160a060020a031663cbde2ff08360405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156127f257600080fd5b5af115156127ff57600080fd5b50505060405180519050801561287457506003544290600160a060020a0316630ecda1138460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561285a57600080fd5b5af1151561286757600080fd5b5050506040518051905011155b92915050565b6000805481908190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156128be57600080fd5b5af115156128cb57600080fd5b50505060405180511590506128df57600080fd5b600354600160a060020a031663b5c835928560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561292757600080fd5b5af1151561293457600080fd5b50505060405180519050151561294957600080fd5b600354600160a060020a0316638a626ba18560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561299157600080fd5b5af1151561299e57600080fd5b5050506040518051935050821515612a1957600354600160a060020a031663ef4ba5988560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156129f857600080fd5b5af11515612a0557600080fd5b5050506040518051159050612a1957600080fd5b600454600160a060020a0316636352211e8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612a6157600080fd5b5af11515612a6e57600080fd5b50505060405180519250506000831115612b3457612a8b84610d87565b600554600654919250600160a060020a0390811691635b99df7f9116338484878960405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b1515612b1257600080fd5b5af11515612b1f57600080fd5b505050604051805190501515612b3457600080fd5b837f2ea9d733fc3abfc39714b4ba66cc5968e15977a6335e955ec1e3bef0dc9c772d60008560405191825260208201526040908101905180910390a2600454600160a060020a031663bcf0dd8e83338760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515612bd357600080fd5b5af11515612be057600080fd5b50505050505050565b6000805481908190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612c2d57600080fd5b5af11515612c3a57600080fd5b5050506040518051159050612c4e57600080fd5b600454600160a060020a031663818d4b5d338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612ca457600080fd5b5af11515612cb157600080fd5b505050604051805190501515612cc657600080fd5b83851415612cd357600080fd5b612cdc856127a7565b8015612cec5750612cec846127a7565b1515612cf757600080fd5b600354600160a060020a031663ee34c6ad8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612d3f57600080fd5b5af11515612d4c57600080fd5b505050604051805190501515612d6157600080fd5b600454600090600160a060020a031663614984d187600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515612db357600080fd5b5af11515612dc057600080fd5b5050506040518051905060ff16118015612e435750600454600090600160a060020a031663614984d186600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515612e2757600080fd5b5af11515612e3457600080fd5b5050506040518051905060ff16115b1515612e4e57600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612e8d57600080fd5b5af11515612e9a57600080fd5b505050604051805134149050612eaf57600080fd5b600354600160a060020a031663020f899a8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612ef757600080fd5b5af11515612f0457600080fd5b5050506040518051935050600083111561307b57600054600160a060020a031663e84742308460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612f6057600080fd5b5af11515612f6d57600080fd5b5050506040518051600554600654600454929550600160a060020a039182169350635b99df7f929082169133918791869116636352211e8c60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612fdb57600080fd5b5af11515612fe857600080fd5b505050604051805190508960405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b151561305957600080fd5b5af1151561306657600080fd5b50505060405180519050151561307b57600080fd5b613084856141d2565b61308d846141d2565b600454600160a060020a031663ce5a5df73360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156130dd57600080fd5b5af115156130ea57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631e5d2e419116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561314257600080fd5b5af1151561314f57600080fd5b5050506040518051905083888860405160e060020a63ffffffff87160281526004810193909352602483019190915260448201526064016000604051808303818588803b151561319e57600080fd5b5af115156131ab57600080fd5b5050505083857ff0b757e02a273cc60dcbb8fb9fd8157b50a8c73af2a6bb8b7917d7c895482575838660405191825260208201526040908101905180910390a38033600160a060020a0316600080516020614c79833981519152878760405191825260208201526040908101905180910390a36132278561413e565b5050505050565b60008054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b60005433600160a060020a0390811691161461328957600080fd5b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156132c857600080fd5b5af115156132d557600080fd5b5050506040518051905015156132ea57600080fd5b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561332957600080fd5b5af1151561333657600080fd5b50505060405180516004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03928316179055600054169050635550e4f36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156133a057600080fd5b5af115156133ad57600080fd5b50505060405180516001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392831617905560005416905063a76d368a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561341757600080fd5b5af1151561342457600080fd5b50505060405180516002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905550565b60075481565b600b5481565b600054600160a060020a03166386e476dd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156134a757600080fd5b5af115156134b457600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156134dd57600080fd5b600354600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561351c57600080fd5b5af1151561352957600080fd5b5050506040518051600354909150600160a060020a031663b30387a46040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561357357600080fd5b5af1151561358057600080fd5b5050506040518051905014151561359657600080fd5b600354600160a060020a0316633c2f7df56040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156135d557600080fd5b5af115156135e257600080fd5b50506003547f82a435bab9dac7abe42e365cda0c3cb0f64bf2b839af282f9e312d2d66145c849150600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561364657600080fd5b5af1151561365357600080fd5b5050506040518051905060405190815260200160405180910390a1565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156136af57600080fd5b5af115156136bc57600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156136e557600080fd5b600081600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561373557600080fd5b5af1151561374257600080fd5b5050506040518051905011151561375857600080fd5b600054600160a060020a038083169163a9059cbb9116636ad5b3ea6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156137a157600080fd5b5af115156137ae57600080fd5b5050506040518051905083600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561380657600080fd5b5af1151561381357600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561386057600080fd5b5af1151561386d57600080fd5b5050506040518051505050565b60008054600160a060020a031663a2c174596040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b600654600160a060020a031681565b60008054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561390957600080fd5b5af1151561391657600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561393f57600080fd5b600160a060020a033016318290101561395757600080fd5b600054600160a060020a03166349b7a9c26040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561399657600080fd5b5af115156139a357600080fd5b5050506040518051915050600160a060020a038116630b6826ca836040518263ffffffff1660e060020a0281526004016000604051808303818588803b15156139eb57600080fd5b5af115156139f857600080fd5b50506000547f8c9a4f13b67cb64d7c6aa1ae0c9bf07694af521a28b93e7060020810ab4bc59f9250600160a060020a031690506349b7a9c26040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515613a5e57600080fd5b5af11515613a6b57600080fd5b5050506040518051905083604051600160a060020a03909216825260208201526040908101905180910390a15050565b600254600160a060020a031681565b600082820183811015613ab957fe5b8091505b5092915050565b600160a060020a0386166000908152600e60205260408120548190819060ff161515613b0e57613b0b670de0b6b3a7640000612278600c54876144c590919063ffffffff16565b91505b600554600160a060020a0316633cac23878a60405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613b5e57600080fd5b5af11515613b6b57600080fd5b5050506040518051905015613c87575087600160a060020a0381166351118f1d33878760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613bdd57600080fd5b5af11515613bea57600080fd5b505050604051805190501515613bff57600080fd5b80600160a060020a03166351118f1d33308560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613c6057600080fd5b5af11515613c6d57600080fd5b505050604051805190501515613c8257600080fd5b613d35565b600554600160a060020a0316635b99df7f8a3387848a613cad838a63ffffffff61484e16565b60405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b1515613d1357600080fd5b5af11515613d2057600080fd5b505050604051805190501515613d3557600080fd5b613d4988612278888763ffffffff6144c516565b600554909350600160a060020a0316633cac23878860405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613d9c57600080fd5b5af11515613da957600080fd5b5050506040518051905015613e405786600160a060020a03166351118f1d86338660405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613e1957600080fd5b5af11515613e2657600080fd5b505050604051805190501515613e3b57600080fd5b613ecc565b600554600160a060020a031663f18d03cc8887338760405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b1515613eaa57600080fd5b5af11515613eb757600080fd5b505050604051805190501515613ecc57600080fd5b50509695505050505050565b600354600160a060020a031663dd1b89c68260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515613f2057600080fd5b5af11515613f2d57600080fd5b50505060405180519050151561400157600354600454600160a060020a03918216916347e4ddf29184911663614984d18260a360405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515613f9b57600080fd5b5af11515613fa857600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401600060405180830381600087803b1515613ff057600080fd5b5af11515613ffd57600080fd5b5050505b600354600160a060020a03166391256ed08260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561404957600080fd5b5af1151561405657600080fd5b505050604051805190501561111857600354600160a060020a03166354e921cb82600060405160e060020a63ffffffff8516028152600481019290925215156024820152604401600060405180830381600087803b15156140b657600080fd5b5af115156140c357600080fd5b5050600354600160a060020a03169050632b100a31826140e281614860565b60405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b151561173b57600080fd5b600080614136612710612278868663ffffffff6144c516565b949350505050565b600354600160a060020a031663c7024b988260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561418657600080fd5b5af1151561419357600080fd5b505050604051805190501561111857807f868a9e71dfb115bed3ee872d882e85e6054c40386de4fbb9b016f78717d7b9ed60405160405180910390a250565b60006141dd82613ed8565b60038054600160a060020a0316630c5162838460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561422657600080fd5b5af1151561423357600080fd5b5050506040518051905010156142a057600354600160a060020a031663b556a8958360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561428b57600080fd5b5af1151561429857600080fd5b5050506143c1565b600354600790600160a060020a031663f8cbd5808460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156142eb57600080fd5b5af115156142f857600080fd5b5050506040518051905010156143c157600354600160a060020a0316639616b4108360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561435057600080fd5b5af1151561435d57600080fd5b5050600354600160a060020a0316905063549ddcbd83600060405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b15156143b057600080fd5b5af115156143bd57600080fd5b5050505b600354429061442b90600160a060020a031663f8cbd5808560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561440f57600080fd5b5af1151561441c57600080fd5b50505060405180519050614b26565b60035491019150600160a060020a031663883a92e1838360405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b151561447d57600080fd5b5af1151561448a57600080fd5b505050817fdd9be30312ed220ed4ad7da78e6ee32d6652506b26c7de8d06e849fa224d1c5d8260405190815260200160405180910390a25050565b6000808315156144d85760009150613abd565b508282028284828115156144e857fe5b0414613ab957fe5b6003546000908190600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561453457600080fd5b5af1151561454157600080fd5b5050506040518051600354909150600160a060020a031663b30387a46040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561458b57600080fd5b5af1151561459857600080fd5b505050604051805190501015156145ae57600080fd5b600454600160a060020a031663ce5a5df78460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156145fe57600080fd5b5af1151561460b57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631a9caab99116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561466357600080fd5b5af1151561467057600080fd5b505050604051805190508360405160e060020a63ffffffff851602815260048101919091526024016000604051808303818588803b15156146b057600080fd5b5af115156146bd57600080fd5b505050508083600160a060020a0316600080516020614c7983398151915260008060405191825260208201526040908101905180910390a3600354600160a060020a0316635c752f6b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561473457600080fd5b5af1151561474157600080fd5b5091949350505050565b600080828481151561475957fe5b04949350505050565b600354600160a060020a031663b5c835928260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156147aa57600080fd5b5af115156147b757600080fd5b505050604051805190501561111857600354600160a060020a03166374268ff28260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561480e57600080fd5b5af1151561481b57600080fd5b505050807f5ea1bcce7d1009a8f5578c7ae0fb858880637a891d4e67851c12e37b35f59c6360405160405180910390a250565b60008282111561485a57fe5b50900390565b600061486a614c35565b614872614c5d565b61487a614c5d565b600080600060a060405190810160409081526070825260756020830152607a81830152607f60608301526084608083015290965061014090519081016040908152600d825260126020830152601781830152601c606083015260216080830152602660a0830152602b60c0830152603060e08301526035610100830152603a6101208301529095506101409051908101604090815260578252605c602083015260619082015260666060820152606b6080820152608960a0820152608e60c0820152609360e08201526098610100820152609d6101208201529350600092508291505b60058210156149f057600454600160a060020a031663614984d18988856005811061498457fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b15156149c757600080fd5b5af115156149d457600080fd5b505050604051805160ff1693909301925060019091019061495d565b600091505b600a821015614b1757600454600160a060020a031663614984d1898685600a8110614a1c57fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515614a5f57600080fd5b5af11515614a6c57600080fd5b505050604051805160ff16915050801515614b0857600454614b0290600160a060020a031663614984d18a8886600a8110614aa357fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515614ae657600080fd5b5af11515614af357600080fd5b50505060405180519050614bcd565b60ff1690505b918201916001909101906149f5565b5050610e100295945050505050565b6000600882818110614b3457fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff169050600982600881101515614b6757fe5b60088104919091015460079091166004026101000a900463ffffffff1615610ae15760098260088110614b9657fe5b60088104919091015460079091166004026101000a900463ffffffff16436000190140811515614bc257fe5b06610e100201919050565b600060018260ff1610614c2d5760bd8260ff1610614c255760e08260ff1610614c1d5760f48260ff1610614c155760fe8260ff1610614c0d576005614c10565b60045b614c18565b60035b614c20565b60025b614c28565b60015b612874565b506000919050565b60a06040519081016040526005815b600081526000199091019060200181614c445790505090565b61014060405190810160405260008152600960208201614c44560051b6670023a2e348a2cb6b181f6ceed38b9ca16e2a416c7f437722cda97264d0a165627a7a72305820aa118b975d422de22dabc794fd0c9e187d7312f52af3d10fcb3c3fa797d785e10029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cd3fa0487f41cc2fe73d3278f5356ffee0cbcc4b0000000000000000000000006cbd7992d39a106a64807125899b2dfc02a4369400000000000000000000000010cc060f6f9b2e5dcdb23f1361e4b368a7daec73
-----Decoded View---------------
Arg [0] : _breedingDB (address): 0xCD3fA0487F41cc2FE73D3278F5356ffEE0cbCc4B
Arg [1] : _balances (address): 0x6CBD7992D39A106A64807125899b2dFC02a43694
Arg [2] : _unicornManagementAddress (address): 0x10CC060f6f9B2E5DCDB23F1361E4b368A7DAeC73
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000cd3fa0487f41cc2fe73d3278f5356ffee0cbcc4b
Arg [1] : 0000000000000000000000006cbd7992d39a106a64807125899b2dfc02a43694
Arg [2] : 00000000000000000000000010cc060f6f9b2e5dcdb23f1361e4b368a7daec73
Swarm Source
bzzr://aa118b975d422de22dabc794fd0c9e187d7312f52af3d10fcb3c3fa797d785e1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,364.97 | 0.3525 | $833.64 |
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.